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

Изменение первого сообщения темы в определённом разделе

Тема в разделе "Вопросы и ответы по XenForo Framework", создана пользователем SAS1024, 18.06.2015.

Загрузка
  1. SAS1024

    SAS1024 Местный

    Регистрация:
    23.04.15
    Сообщения:
    85
    Симпатии:
    87
    Версия XF:
    1.4.10
    У меня очередной вопрос :)

    Мне необходимо перед содержимым первого сообщения тем в определённом разделе форума вставлять поясняющую информацию, которая зависит от ID темы.

    Мне пришел в голову вариант с модификацией шаблона message, только чтобы модификация шаблона использовала PHP-обработчик.

    Но в этом случае возникает проблема - я не понял как мне в PHP-обработчике определить ID темы и ID раздела.

    --
    Но может быть, есть какой-то другой вариант? Кто-нибудь решал подобную задачку?
     
  2. akinak

    akinak Местный

    Регистрация:
    12.02.13
    Сообщения:
    259
    Симпатии:
    243
    Версия XF:
    1.1.3
    В этом шаблоне есть много переменных, в частности массив самой темы ($thread). А в нем уже и ай-ди раздела.
    $thread.thread_id - темы
    $thread.node_id - раздел

    <xen if is="{$thread.first_post_id} === {$messageId}"> Так отличить, что сообщение является первым</xen:if>

    Но вообще говоря, не понятно, зачем php обработчик, в который будут передаваться ай-ди темы и раздела? Если по ним планируется извлекать какую-то инфу из базы например, то это не очень оптимально будет (+1 запрос в лучшем случае).
     
    Kolya groza morey нравится это.
  3. SAS1024

    SAS1024 Местный

    Регистрация:
    23.04.15
    Сообщения:
    85
    Симпатии:
    87
    Версия XF:
    1.4.10
    akinak, ну, пхп обработчик будет тащить из другой базы данных информацию, которая привязана к ID темы.
     
  4. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Вообще есть различные варианты решений. Например, можно написать плагин, который добавит поле к таблице узлов, в котором будет храниться какая-то информация. Соответственно, затем эта информация будет через изменение шаблонов выводиться пользователю. Тогда это вообще не добавит ни одного запроса. Также можно и не через поле, а через дополнительную таблицу сделать, но тогда это усложнит плагин, хотя на производительность в целом практически не повлияет.
    Если требуется из другой базы вытаскивать данные, то можно делать это через планировщик. Это ненамного снизит актуальность, но производительность форума не пострадает. Также можно и при обновлении данных в другой базе там же делать запрос на обновление поля в базе ксена. Это опять таки не повлияет на производительность. Насколько я понимаю, данные там не будут обновляться слишком часто, поэтому мой вариант решения имеет смысл.
     
    SAS1024 и Kolya groza morey нравится это.
  5. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    пхп обработчик для модификации шаблона - это обработчик исключительно для изменения шаблона в момент его сохранения, но не запуска в момент отображения/рендера шаблона. Рендертся уже измененный и скомпилированный шаблон.
    Если надо выполнить какой-то произвольный код, то самый простой способ это тег <xen:callback >
    https://xenforo.com/community/threads/xen-callback-tag.62124/

    А более правильно конечно расширить конкретный метод контроллера, чтобы добавить необходимые данные в ответ родительствого метода (и там есть все и права доступа и форум и все что только нужно для отображения)
     
    SAS1024 нравится это.
  6. SAS1024

    SAS1024 Местный

    Регистрация:
    23.04.15
    Сообщения:
    85
    Симпатии:
    87
    Версия XF:
    1.4.10
    Всем спасибо, решил вопрос с помощью <xen:callback>, плюс всё сделал возврат результата в свой отдельный шаблон.
    infis, очень помогла твоя статья про них.

    Если кому интересно - это я делал у себя на сайте отображение информации об игре, если заходишь в тему, которая к ней привязана.
     

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