Хук integrate_display_topic

С помощью этого хука можно изменить или дополнить выборку при получении данных о просматриваемой теме форума.

Расположение

Display.php

call_integration_hook('integrate_display_topic', array(&$topic_selects, &$topic_tables, &$topic_parameters));

Хук принимает в качестве параметров массивы $topic_selects, $topic_tables и $topic_parameters. С помощью них можно получать дополнительные столбцы $topic_selects из таблиц smf_topics, smf_messages, smf_members, а также из других, перечисленных в переменной $topic_tables. Переменная $topic_parameters используется для указания дополнительных параметров запроса.

Использование

Как подключить

Рассмотрим пример:

<?php

if (!defined('SMF'))
    die('No direct access...');

class YourModName
{
    // В этой функции подключаем используемые хуки
    public function hooks()
    {
        add_integration_function('integrate_display_topic', __CLASS__ . '::displayTopic#', false, __FILE__);
    }

    // Получаем дополнительные сведения при просмотре темы
    public function displayTopic(&$topic_selects, &$topic_tables, &$topic_parameters)
    {
        // Запрашиваемый столбец
        $topic_selects[] = 'your_column_name';

        // Запрашиваемая таблица, связанная с smf_tables
        $topic_tables[] = 'LEFT JOIN {db_prefix}your_table AS yt ON (yt.id_topic = t.id_topic AND yt.other_column_name = {string:your_parameter})';

        // Требуемое значение параметра (если нужно)
        $topic_parameters['your_parameter'] = 'your_value';
    }

    // Далее в коде (на странице текущей темы) можно будет обращаться к полученному столбцу через $context['topicinfo']['your_column_name']
}

Благодаря этому хуку, например, Optimus при просмотре темы в одном запросе получает сведения об описании, ключевых словах, а также о первом вложении.