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

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

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

Загрузка
  1. CyberAP

    CyberAP Местный

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

    FractalizeR XenForo Addicted

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

    CyberAP Местный

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

    FractalizeR XenForo Addicted

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

    Ice Местный

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

    Ice Местный

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

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

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

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

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

    Ice Местный

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

    FractalizeR XenForo Addicted

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

    megavolt Местный

    Регистрация:
    31.10.10
    Сообщения:
    80
    Симпатии:
    49
    Ахха,действительно дата не менялась:)
    Ну это легко поправимо,достаточно $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
    Симпатии:
    832
    Версия 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 966
    Симпатии:
    3 548
    Версия 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 нравится это.
  17. titanime

    titanime Новичок

    Регистрация:
    10.10.16
    Сообщения:
    7
    Симпатии:
    0
    Версия XF:
    1.5.10
    mad@Max, mad@Max,
    А есть ли более осовремененная версия для xf 1.5 ?
     
  18. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    А чем эта не нравится?
     
  19. titanime

    titanime Новичок

    Регистрация:
    10.10.16
    Сообщения:
    7
    Симпатии:
    0
    Версия XF:
    1.5.10
    она не работает выдает ошибку
    1. Invalid argument supplied for foreach() in xenforo\internal_data\templates\S.1,L.2,forum_list.php, line 590
    2. Возможно я что то не так прописал в обработчике ... но как не переставлял всеми вариантами не робит
     
  20. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Вполне вероятно, что Вы модифицировали шаблон, а вот код, который формирует переменную, у Вас не работает. То есть не загружается нужный класс, не срабатывает или отсутствует обработчик загрузки класса.
     

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