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

Пишем аддон для отображения списка последних тем на главной странице

Тема в разделе "Статьи по XenForo Framework", создана пользователем FractalizeR, 18 окт 2010.

Загрузка
  1. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2.577
    Симпатии:
    1.614
    Версия XF:
    1.5.10
    Я не очень хорошо понимаю код. Тут необходимо вместо last_post_date заменить на likes? Ну и вместо time() - 1*24*60*60 что-то придумать...
     
  2. FractalizeR

    FractalizeR XenForo Addicted Команда форума

    Регистрация:
    27.09.10
    Сообщения:
    1.085
    Симпатии:
    823
    Версия XF:
    1.3.2
    Нет, секунду. Какой конкретно должен быть критерий фильтрации, а какой сортировки?
     
  3. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2.577
    Симпатии:
    1.614
    Версия XF:
    1.5.10
    Фильтрация: Количество лайков первого поста (>чем 10% от количества активных юзеров), количество просмотров за неделю (5 самых просматриваемых тем на этой неделе), к примеру.
    Сортировка: Количество просмотров
     
  4. FractalizeR

    FractalizeR XenForo Addicted Команда форума

    Регистрация:
    27.09.10
    Сообщения:
    1.085
    Симпатии:
    823
    Версия XF:
    1.3.2
    Такого рода условия стандартной логикой не реализуешь. Придется отдельно запрашивать количество активных пользователей, и самые просматриваемые темы.
     
    CyberAP нравится это.
  5. Ice

    Ice Местный

    Регистрация:
    13.10.10
    Сообщения:
    205
    Симпатии:
    103
    Версия XF:
    1.1.2
    а как сделать чтобы в этом списке не палились темы из специальных разделов, которые не для всех? ну или палились только тем пользователям, которые имеют доступ к этим разделам?
     
  6. Ice

    Ice Местный

    Регистрация:
    13.10.10
    Сообщения:
    205
    Симпатии:
    103
    Версия XF:
    1.1.2
    мда...

    вроде всё установилось, показало темы.
    правда смутило то что во всех заголовках тем одна дата - 7 дек 2010.
    ну да ладно, разбираться некогда было...

    щас глянул форум - висят те же темы в той же последовательности и тоже - 7 дек 2010.

    глянул в задания планировщика - и что-то не увидел там никакого задания по обновлению последних тем...
    zadaniya_planirovshika.png

    XFR_ShowLastThreadsOnHome.rar - этот готовый адд-он на бете 5 работает?...
     
  7. Ice

    Ice Местный

    Регистрация:
    13.10.10
    Сообщения:
    205
    Симпатии:
    103
    Версия XF:
    1.1.2
    афтар, ты жив??? аууууу )))
     
  8. FractalizeR

    FractalizeR XenForo Addicted Команда форума

    Регистрация:
    27.09.10
    Сообщения:
    1.085
    Симпатии:
    823
    Версия XF:
    1.3.2
    Да жив я. Это учебный аддон, в код смотрим и разбираемся самостоятельно.
     
  9. megavolt

    megavolt Местный

    Регистрация:
    31.10.10
    Сообщения:
    80
    Симпатии:
    48
    Ахха,действительно дата не менялась:)
    Ну это легко поправимо,достаточно $thread.post_date исправить на $xfr_thread.post_date.

    Хотя оригинальный вариант , если новые темы на форуме появляются редко,подходит лучше:D
     
  10. pivovody

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

    Регистрация:
    04.08.11
    Сообщения:
    28
    Симпатии:
    0
    Для версии 1.1 бета 2 не ставиться. Подскажите как вывести последние сообщения форума на главную справа в колонке?
     
  11. FractalizeR

    FractalizeR XenForo Addicted Команда форума

    Регистрация:
    27.09.10
    Сообщения:
    1.085
    Симпатии:
    823
    Версия XF:
    1.3.2
    Что означает "не ставится"?
     
  12. pivovody

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

    Регистрация:
    04.08.11
    Сообщения:
    28
    Симпатии:
    0
    все ставлю по инструкции. прописываю в шаблоне, а нету последних новостей..
     
  13. creativ

    creativ Местный

    Регистрация:
    27.09.10
    Сообщения:
    43
    Симпатии:
    21
    Версия XF:
    1.1.1
    Добавляю обработчик событий XFR_ShowLastThreadsOnHome.png

    После попытки сохранения обработчика событий - Ошибка. Пожалуйста, введите корректное имя метода обработчика
     
  14. infis

    infis Местный Команда форума

    Регистрация:
    27.06.11
    Сообщения:
    5.525
    Симпатии:
    3.321
    Версия XF:
    1.5.9
    Перед прописыванием обработчика событий необходимо создать нужный файл в нужном месте. Прочитайте внимательно первый пост. Порядок создания файлов и обработчиков важен!

    И, кстати, сейчас, наверное, можно обойтись и без прямой правки шаблонов, используя хуки.
     
  15. mad@Max

    mad@Max Местный

    Регистрация:
    04.12.10
    Сообщения:
    22
    Симпатии:
    19
    Версия XF:
    1.2.2
    В условиях текущей реальности (если еще актуально :))
    Нужен всего один обработчик:
    PHP:
    <?php
    class XFR_ShowLastThreadsOnHome_Plugin
    {
        public static function 
    template($hookName, &$contents, array $hookParamsXenForo_Template_Abstract $template)
        {
            if (
    $hookName == 'forum_list_sidebar')
            {
                
    $postFetchOptions = array('limit' => 30'order' => 'post_date''orderDirection' => 'desc');
                
    $postFetchConditions = array('deleted' => false'moderated' => false);
                
    $threadModel XenForo_Model::create('XenForo_Model_Thread');

                
    $hookParams['xfr_lastthreadsonhome'] = $threadModel->getThreads($postFetchConditions$postFetchOptions);

                
    $contents .= $template->create('lastthreads_sidebar'$hookParams);
            }
        }
    }
    Вешаем его на "template_hook". Ну и создаем шаблон lastthreads_sidebar с содержимым, которое написано в первом посте - вуаля:)
     
    Mirovinger и adder нравится это.
  16. mad@Max

    mad@Max Местный

    Регистрация:
    04.12.10
    Сообщения:
    22
    Симпатии:
    19
    Версия XF:
    1.2.2
    Вариант с кешированием:
    PHP:
    <?php
    class XFR_ShowLastThreadsOnHome_Plugin
    {
        public static function 
    template($hookName, &$contents, array $hookParamsXenForo_Template_Abstract $template)
        {
            if (
    $hookName == 'forum_list_sidebar')
            {
                
    $cache XenForo_Application::getCache();
                
    $cacheData = ($cache $cache->load('xfr_lastthreadsonhome') : false);
                
    $lastThreads = array();
                if (
    $cacheData !== false)
                {
                    
    $lastThreads unserialize($cacheData);
                }
                else
                {
                    
    $postFetchOptions = array('limit' => 10'order' => 'post_date''orderDirection' => 'desc');
                    
    $postFetchConditions = array('deleted' => false'moderated' => false);
                    
    $threadModel XenForo_Model::create('XenForo_Model_Thread');
       
                    
    $lastThreads $threadModel->getThreads($postFetchConditions$postFetchOptions);
                    
    $cache->save(serialize($lastThreads), 'xfr_lastthreadsonhome');
                }

                
    $hookParams['xfr_lastthreadsonhome'] = $lastThreads;

                
    $contents .= $template->create('lastthreads_sidebar'$hookParams);
            }
        }
    }
     
    Mirovinger нравится это.

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