1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

Вывод последних тем форума на главную сайта

Тема в разделе "Плагины для XenForo [1.x]", создана пользователем SeM13, 14.03.2011.

Загрузка
  1. SeM13

    SeM13 Создатель системы

    Регистрация:
    05.01.11
    Сообщения:
    747
    Симпатии:
    258
    Версия XF:
    1.1.3
    Мод не мой, просто немного отредактировал и попонятней расписал.
    Да и не мод это вовсе, а просто эдакий код для вывода ваших тем.

    PHP:

    // отредактируйте путь к форуму.
    $forum_url 'chill/';

    // укажите путь до конфигурационного файла.
    include($forum_url 'library/config.php');

    // Укажите сколько последних сообщений выводить в "блоке".
    $limit 7;

    // введите id категорий из каких следует брать последние сообщения. Или выберете "ALL" что бы бралось со всего форума.
    $forum_ids 'ALL';

    mysql_connect($config['db']['host'], $config['db']['username'], $config['db']['password']);
    mysql_select_db($config['db']['dbname']);

    $where '';
    if (
    $forum_ids != 'ALL')
    {
        
    $where 'WHERE `node_id` IN ($forum_ids)';
    }

    $sql_forum "SELECT `title`, `thread_id` FROM `xf_thread` {$where} ORDER BY `last_post_date` DESC LIMIT {$limit}";

    $query_forum mysql_query($sql_forum);
        while (
    $topics mysql_fetch_assoc($query_forum))
        {
            
    $url_title str_replace(' ''-'$topics['title']);
            
    $url_title str_replace('.'''$url_title);
            
    $url_title str_replace('?'''$url_title);
            
    $url_title str_replace('/''-'$url_title);
            
    $url_title str_replace('\\''-'$url_title);
            
    $url_title str_replace('"'''$url_title);
            echo 
    "<a href=\"{$forum_url}index.php?threads/{$url_title}.{$topics['thread_id']}/\">{$topics['title']}</a>";
        }
    И вот такой вот код, дабы выводить это на сайт:
    PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Latest X Threads</title>
    </head>

    <body>
        <ul>
            <?php
            
    // Ниже укажите имя, пароль и имя бд для подключения.
            
    $database_host 'localhost'// по стандарту это localhost
            
    $database_username 'root'// Имя к БД
            
    $database_password 'root'// Пароль к БД
            
    $database_db 'xenforo'// Имя БД

            
    $forum_url ''// Укажите тут путь к вашему форуму (независимо от папки в которой он находится)

            
    $limit 5// Укажите лимит на отображение последних тем.

            
    $forum_ids 'ALL'// Укажите с каких разделов брать последние темы, либо укажите "ALL" что бы брать со всего форума.

            
    mysql_connect($database_host$database_username$database_password);
            
    mysql_select_db($database_db);

            
    $where '';
            if (
    $forum_ids != 'ALL')
            {
                
    $where 'WHERE `node_id` IN ($forum_ids)';
            }

            
    $sql_forum "SELECT `title`, `thread_id` FROM `xf_thread` {$where} ORDER BY `last_post_date` DESC LIMIT {$limit}";

            
    $query_forum mysql_query($sql_forum);
                while (
    $topics mysql_fetch_assoc($query_forum))
                {
                    
    $url_title str_replace(' ''-'$topics['title']);
                    
    $url_title str_replace('.'''$url_title);
                    
    $url_title str_replace('?'''$url_title);
                    
    $url_title str_replace('/''-'$url_title);
                    
    $url_title str_replace('\\''-'$url_title);
                    
    $url_title str_replace('"''-'$url_title);
                    echo 
    "<li><a href=\"{$forum_url}index.php?threads/{$url_title}.{$topics['thread_id']}/\">{$topics['title']}</a></li>";
                }
            
    ?>
        </ul>
    </body>

    </html>
    Пожалуйста поправьте меня если где то допустил ошибку. Или если тема не там создана.
     
    plutishe, lifeact, NSky и 7 другим нравится это.
  2. bullion

    bullion Активный пользователь

    Регистрация:
    14.03.11
    Сообщения:
    2
    Симпатии:
    2
    Благодарю за мод - весьма нужная вещь!
     
    stiks7 и SeM13 нравится это.
  3. Desperado

    Desperado Местный

    Регистрация:
    23.10.10
    Сообщения:
    270
    Симпатии:
    98
    Версия XF:
    1.1.3
    PHP:
    <?php

    if( ! defined'DATALIFEENGINE' ) ) {
        die( 
    "Hacking attempt!" );
    }

    define ('CACHE_NAME'"last_treads");

     if(
    $Settings['Last_Treads_Status'] == FALSE) die("<center>Данный модуль выключен.</center>");
     else if (
    $Settings['Last_Treads_Forum'] == 'XenForo') {
       
    $cache = new cacheClass(CACHE_DIR$Settings['CacheTime']);
         if (
    $cache->checkForWrite(CACHE_NAME '&type=' $Settings['Last_Treads_Forum'])) {
            
    $row $forum->select("SELECT `thread_id`, `node_id`, `title`, `reply_count`, FROM_UNIXTIME(`last_post_date`) AS `date`, `last_post_id`, `last_post_user_id`,  `last_post_username` FROM  ".$config['forum_prefix']."_thread WHERE `node_id` NOT IN ( ?a ) ORDER BY `last_post_date` DESC LIMIT 0 , ?d"$Settings['Last_Treads_Ignore'], $Settings['Last_Treads_Result_Count']);
              
    $MainLastTreads "<div class='sidebar-title'><h4 align='center'>Последние сообщения форума</h4></div>";
                  foreach(
    $row as $data)
                    {
                      
    $page ceil($data['reply_count'] / $Settings['Forum_Message_Count']);
                        if(
    $page 1$page 1;

                        
    $MainLastTreads .= "<div class='sidebar-title'>
                            <div class='sidebar-content poptopic-list'>
                              <a href='/forum/threads/"
    .$data['thread_id']."/page-".$page."#post-".$data['last_post_id']."' target='_blank'>
                                <span class='int'>
                                <span class='title'> "
    .$data['title']." </span>
                                <span class='desc'>
                                <span class='loc'><i>Последнее сообщение от "
    .$data['last_post_username']."<br />(Ответов: ".$data['reply_count']."). Дата: ".$data['date']."</i></span>
                                </span>
                                </span>
                              </a>
                             </div>
                           </div>"
    ;
                    }
             
    $MainLastTreads .=  "</div>";
             
    $cache->setContent($MainLastTreads);
             
    $cache->writeCache(CACHE_NAME '&type=' $Settings['Last_Treads_Forum']);
             
    $tpl->set('{sidebar}'$cache->getContent());
           } else {
             
    $tpl->set('{sidebar}'$cache->readCache(CACHE_NAME '&type=' $Settings['Last_Treads_Forum']));
           }
     }
     else {
        die(
    "<center>Пожалуйста, проверьте правильность конфигурации.</center>");
     }
    ?>
    Мой вариант.
    Думаю, комментарии излишни. Тут основная ценность - запрос :D
    Кому надо, с лёгкостью "перепилит" под себя.
     
    TAIFUN, Goldman, exarh и ещё 1-му нравится это.
  4. Goldman

    Goldman Местный

    Регистрация:
    07.11.10
    Сообщения:
    70
    Симпатии:
    37
    Прошу прощения, но некоторым (как я) коментраии требуются :D
    Подключить просто инклюдом тот код что вы предложили или.....?
     
  5. rusinnovation

    rusinnovation Активный пользователь

    Регистрация:
    13.03.11
    Сообщения:
    28
    Симпатии:
    3
    думаю стоит еще скриншот прикрепить как это будет выглядеть :)
     
  6. SeM13

    SeM13 Создатель системы

    Регистрация:
    05.01.11
    Сообщения:
    747
    Симпатии:
    258
    Версия XF:
    1.1.3
    Обычным списком:
     
  7. Desperado

    Desperado Местный

    Регистрация:
    23.10.10
    Сообщения:
    270
    Симпатии:
    98
    Версия XF:
    1.1.3
    rusinnovation, в моём случае это будет выглядеть так http://s59.radikal.ru/i163/1103/af/a64b153fbd10.png
    Но стоит учитывать, что это всё стили (css)...
    Goldman, нет) Придётся проявить немного смекалки, чтобы адаптировать и интегрировать код в ваш движок.
     
    dwell и rusinnovation нравится это.
  8. RooTM

    RooTM Read only

    Регистрация:
    10.03.11
    Сообщения:
    8
    Симпатии:
    19
    Вот cделал для DataLife Engine 9.x
     
    sabas, Romchik® и TAIFUN нравится это.
  9. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Нормальный рабочий плагин для DLE? Может создадите отдельную тему тут?
     
  10. makdeniss

    makdeniss Местный

    Регистрация:
    06.10.10
    Сообщения:
    62
    Симпатии:
    20
  11. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Имхо, не хватает обрезания символов в названии темы.
     
  12. RooTM

    RooTM Read only

    Регистрация:
    10.03.11
    Сообщения:
    8
    Симпатии:
    19
    TAIFUN, butik и Romchik® нравится это.
  13. makdeniss

    makdeniss Местный

    Регистрация:
    06.10.10
    Сообщения:
    62
    Симпатии:
    20
    Я думал над этим, но решено было вставлять полные названия тем.
     
  14. Desperado

    Desperado Местный

    Регистрация:
    23.10.10
    Сообщения:
    270
    Симпатии:
    98
    Версия XF:
    1.1.3
    ну мой тоже на DLE расчитан... ровно как и на dbsimple и на самописный класс кеширования (ну не люблю я внутренние длешные).
    Просто зачем плодить темы. В 1 будет найти, имхо, легче.
     
  15. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Не вопрос, он ведь и здесь упоминается. А отдельная тема только из-за того, что в виде плагина.
     
  16. Misha

    Misha Местный

    Регистрация:
    11.10.10
    Сообщения:
    11
    Симпатии:
    14
    Возможно кто-то захочет ограничить количество символов в название темы, вот решение:

    Код:
    <?php
    // отредактируйте путь к форуму.
    $forum_url = 'forum/';
    
    // длина названия темы.
    $num = 30;
    
    // укажите путь до конфигурационного файла.
    include($forum_url . 'library/config.php');
    
    // Укажите сколько последних сообщений выводить в "блоке".
    $limit = 7;
    
    // введите id категорий из каких следует брать последние сообщения. Или выберете "ALL" что бы бралось со всего форума.
    $forum_ids = 'ALL';
    
    mysql_connect($config['db']['host'], $config['db']['username'], $config['db']['password']);
    mysql_select_db($config['db']['dbname']);
    
    $where = '';
    if ($forum_ids != 'ALL')
    {
        $where = 'WHERE `node_id` IN ($forum_ids)';
    }
    
    $sql_forum = "SELECT `title`, `thread_id` FROM `xf_thread` {$where} ORDER BY `last_post_date` DESC LIMIT {$limit}";
    
    $query_forum = mysql_query($sql_forum);
        while ($topics = mysql_fetch_assoc($query_forum))
        {
            $url_title = str_replace(' ', '-', $topics['title']);
            $url_title = str_replace('.', '', $url_title);
            $url_title = str_replace('?', '', $url_title);
            $url_title = str_replace('/', '-', $url_title);
            $url_title = str_replace('\\', '-', $url_title);
            $url_title = str_replace('"', '', $url_title);
      
    $cnum = mb_strlen($topics['title']);   
    if($cnum>$num)
    {
    $topics['title'] = mb_substr($topics['title'], 0, $num);
    $topics['title'] = $topics['title'] . '...'; 
    }
    
            echo "<li style=\"padding:5px;font-size:12px;\">» <a href=\"{$forum_url}index.php?threads/{$url_title}.{$topics['thread_id']}/\">{$topics['title']}</a></li>";
        }
    ?>
    Указываем нужное значение в переменной $num, и радуемся ;).
    Я не профи в php, но думаю такое решение вполне сгодится.
     
    tigdav2004, bumz, Romchik® и ещё 1-му нравится это.
  17. Pepelac

    Pepelac Продам луц в бутылках

    Регистрация:
    28.09.10
    Сообщения:
    1 794
    Симпатии:
    1 361
    У форума есть свой хелпер для сокращения строк. Завтра, если дойдут руки, допилю и выложу тут код для вывода тем с использованием API форума...
     
    Romchik® и Azaliya Yunusova нравится это.
  18. Misha

    Misha Местный

    Регистрация:
    11.10.10
    Сообщения:
    11
    Симпатии:
    14
  19. JoKeR174

    JoKeR174 Life for Fun

    Регистрация:
    09.04.11
    Сообщения:
    9
    Симпатии:
    8
    хм... а не подскажите как это все установить? )
     
  20. SeM13

    SeM13 Создатель системы

    Регистрация:
    05.01.11
    Сообщения:
    747
    Симпатии:
    258
    Версия XF:
    1.1.3
    Там вроде все по русски написано.
    Хмм, не можешь научим: шесть3четыре-нуль44-пятерка7нуль
     

Поделиться этой страницей