[Help] Вывод последних тем с форума

Тема в разделе "vBulletin", создана пользователем Avalanch, 23 янв 2010.

Статус темы:
Закрыта.
  1. Avalanch

    Avalanch ТоЛеГ & ТоПеГ

    Регистр.:
    9 янв 2007
    Сообщения:
    1.144
    Симпатии:
    524
    Доброго времени суток!

    Кто знает как можно вывести последние темы с форума на сайт?
    Версия форума vB 4.0.1
    Желательно готовое решение, так как не программист.
     
  2. itpeople

    itpeople

    Регистр.:
    6 дек 2007
    Сообщения:
    546
    Симпатии:
    62
    Пользуюсь таким решением, но у меня форум 3.8, я надеюсь что подойдет и для 4-й линейки, для самого будет актуально если буду обновляться.
    PHP:
    <?php 
    // ################################ 
    // Даже если база сайта и база форума находится не на одном хосте, то 
    // в том месте на сайте, где хотите видеть последние "х" тем с форума, подключить код ниже 
    /* 
        include 'http://path_to_file/file.php'; 
    */ 
    // где "path_to_file" - путь до файла 
    // ################################ 
    SetLocale(LC_ALL'ru_RU.UTF-8');
    require(
    './forum/includes/config.php');   // написать свой путь до файла конфига форума 
    // Define($tableprefix = $config['Database']['tableprefix']); 
    $link mysql_connect(
                  (
    $config['MasterServer']['servername']),
                  (
    $config['MasterServer']['username']),
                  (
    $config['MasterServer']['password'])
                  )
           or die
                (
    "Нет соединения с базой");
    mysql_select_db(($config['Database']['dbname']), $link) or die ("Невозможно выбрать базу");
    // ###### Начало настроек ###### 
       
    $forumdir "/forum";                    // директория форума (без слэша "/" в конце) 
                                                 // если форум и сайт в разных доменах, прописать полный URL до дир. форума 
       
    $privateforumid "0";          // закрытые форумы (ID форумов прописывать через запятую) 
                                                 // если закрытых форумов нет, оставить как есть "0" (ноль) 
       
    $showlimit "10";                         // лимит выводимых тем 
    // ###### Конец настроек ###### 
            
    $lastx_thread $query=(
                              SELECT threadid, 
                                     lastposter, 
                                     title, 
                                     postusername, 
                                     T.lastpost AS lastpostdate, 
                                     views, 
                                     postuserid, 
                                     replycount, 
                                     U.userid as userid 
                              FROM "
    .$tableprefix."thread T 
                              LEFT JOIN "
    .$tableprefix."user U ON (T.lastposter = U.username) 
                              WHERE forumid NOT IN (
    $privateforumid
                              ORDER BY T.lastpost DESC 
                              LIMIT 
    $showlimit 
                              "
    ); 
    $result mysql_query($query$link); 
      echo 
    mysql_error(); 
    $ct=1;
      echo 
    "<table class=latest-phorum-messages><tr>";
      while (
    $lastx_thread mysql_fetch_array($result)) 
            {
            
    $k =fmod($ct,2);
            if (
    $k==1)
        echo 
    "</tr><tr>";
         
    $ct=$ct+1;
      echo 
    "<td><div><a class=topic href='$forumdir/showthread.php?goto=lastpost&t=".$lastx_thread['threadid']."'>".$lastx_thread['title']."</a>"
         if (
    $lastx_thread['userid']) 
      echo 
    "".date("d.m.y, H:i",$lastx_thread['lastpostdate'])." ({$lastx_thread['views']}/{$lastx_thread['replycount']}) <a href='$forumdir/member.php?action=getinfo&userid=".$lastx_thread['userid']."'>".$lastx_thread['lastposter']."</a>
            </div></td>"
    ;  
        else 
      echo 
    "<td><font size='-1'>тема:  <a href='$forumdir/showthread.php?goto=lastpost&t=".$lastx_thread['threadid']."'>".$lastx_thread['title']."</a></font> </td>
            <td><font size='-1'>автор:  
    {$lastx_thread['lastposter']}</font> </td>
            <td><font size='-1'>дата:  "
    .date("d.m.y, H:i",$lastx_thread['lastpostdate'])."</font> </td>
            <td><font size='-1'>просмотров: 
    {$lastx_thread['views']}</td>
            <td>ответов: 
    {$lastx_thread['replycount']}</font> </td>
        "
    ;
      echo 
    "";
       } 
      echo 
    "</tr></table>";
    ?>
    з.ы. немного подправлял что-бы выводились темы таблицей в две колонки
     
    пупер и Avalanch нравится это.
  3. Avalanch

    Avalanch ТоЛеГ & ТоПеГ

    Регистр.:
    9 янв 2007
    Сообщения:
    1.144
    Симпатии:
    524
    На 4ой линейке код работает тоже. Только проблема с кодировкой.
     
  4. itpeople

    itpeople

    Регистр.:
    6 дек 2007
    Сообщения:
    546
    Симпатии:
    62
    Была такая-же проблема, сайт был в utf8, форум в 1251, пришлось конвертировать базу форума в utf8.

    Вот эта строчка я так думаю отвечает за кодировку, UTF-8 поменять на WINDOWS-1251 не пробовали?
     
  5. Avalanch

    Avalanch ТоЛеГ & ТоПеГ

    Регистр.:
    9 янв 2007
    Сообщения:
    1.144
    Симпатии:
    524
    Пробовал, не помогло. В общем буду думать.
     
  6. Dark Angell

    Dark Angell Читатель

    Заблокирован
    Регистр.:
    29 фев 2008
    Сообщения:
    1.035
    Симпатии:
    690
    добавь в начало перед путём к конфигу форума:
    PHP:
    $db->query("SET NAMES latin1");
    или попробуй заюзать данный мод калиостро:
    Посмотреть вложение Block_vb.zip
    он для версии 3.7.х и 3.8.х на 4.х.х не тестил пока что :)
     
  7. itpeople

    itpeople

    Регистр.:
    6 дек 2007
    Сообщения:
    546
    Симпатии:
    62
    Тоже вернулся к этой проблеме, сайт utf8, форум в cp1251.
    Вы нашли решение?
    Этот вариант не помог к сожалению.
    А что делает этот мод?
     
  8. apolius

    apolius Читатель

    Регистр.:
    24 авг 2009
    Сообщения:
    357
    Симпатии:
    30
    Вот кусок кода:

    PHP:
    ("Нет соединения с базой"); 
    mysql_select_db(($config['Database']['dbname']), $link) or die ("Невозможно выбрать базу");
    после вставить это:

    PHP:
    mysql_query("SET NAMES 'utf8'");
    ==
    UPD:
    я использую это:

    PHP:
    <?php
    $db_host 
    "localhost"// Change this if your MySQL database host is different.
    $db_name ""// Change this to the name of your database.
    $db_user ""// Change this to your database username.
    $db_pw ""// Change this to your database password.

    $forum_url "http://beer-review.ru/forum"// Change this to reflect to your forum's URL.
    $forum_id ""// If you wish to display the posts from a specific forum, enter the forum id here. Otherwise, leave it blank.
    $limit "5"// Number of posts displayed.
    $excludeforums ""// The forums you want to exclude from being displayed
    $txtlimit "120"// This is the character limit.
    $wheresql "";
    #######################################

    // Connecting to your database
    mysql_connect($db_host$db_user$db_pw
    OR die (
    "Cannot connect to your database"); 
    mysql_select_db($db_name) OR die("Cannot connect to your database"); 
    mysql_query("SET NAMES 'utf8'");

    // Below is the beginning of a table. If you feel you don't need it, you may remove it.
    echo "<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">";

    if (
    $forum_id) {
    $forum_id "AND forumid=$forum_id";
    }

    if (
    $limit) {
    $limited "LIMIT $limit";
    }
    if (
    $excludeforums == "" or $excludeforums <= "0") {
    $quarter "no";
    } else {
    $excfid explode(",",$excludeforums); $i 0$a count($excfid);
    while (
    $i $a) {
    $wheresql .= " AND thread.forumid!='$excfid[$i]'";    ++$i;
    }
    }
    $qw "SELECT threadid,title,lastpost,lastposter,forumid FROM thread WHERE visible=1 $wheresql AND open=1 $forum_id ORDER BY lastpost DESC $limited";
    //PRINT $qw;
    $thread_sql mysql_query($qw);

    while(
    $thread_get=mysql_fetch_array($thread_sql))
    {
    $lastpost $thread_get['lastpost'];
    $poster $thread_get['lastposter'];
    $tid $thread_get['threadid'];
    $psql mysql_query("SELECT postid FROM post WHERE threadid=$tid ORDER BY postid DESC");
    $getp=mysql_fetch_array($psql);
    $pid $getp['postid'];
    $date2 date ("d/m H:i" ,$lastpost);
    $title $thread_get['title'];
    $title substr($title,0,$txtlimit);
    echo 
    "<tr><td><a href=\"$forum_url/showthread.php?p=$pid#post$pid\">$title</a> ответ от $poster <i>$date2</i></td></tr>";
    }
    echo 
    "</table>";

    ?>

    такой-же как и первый вариант, только вывод не в 2 столбика, а в 1..по-смипотичней
     
    itpeople нравится это.
  9. SergoVinch

    SergoVinch Постоялец

    Регистр.:
    30 ноя 2009
    Сообщения:
    58
    Симпатии:
    6
    Сразу после соединения с БД, в зависимости от кодировки:
    либо
    Код:
    mysql_query("SET NAMES 'cp1251'"); 
    и на самой странице тоже пропишите кодировку
    Код:
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
     
Статус темы:
Закрыта.