Хук integrate_prepare_display_context
Хук integrate_prepare_display_context позволяет работать с сообщениями в темах форума, изменяя как сами посты, так и контент между ними.
Расположение⚓︎
Назначение⚓︎
Хук принимает в качестве параметров массивы $output, $message и $counter. В них содержатся, соответственно, отображаемое сообщение (конечный результат), текущее сообщение темы (исходный вариант) и счётчик (порядковый номер отображаемого сообщения, начинающийся с нуля на каждой странице темы).
Использование⚓︎
<?php
if (! defined('SMF'))
die('No direct access...');
class YourModName
{
// Подключаем используемые хуки
public function hooks(): void
{
add_integration_function('integrate_prepare_display_context', self::class . '::prepareDisplayContext#', false, __FILE__);
}
// Вызывается для каждого сообщения темы, перед отображением на странице
public function prepareDisplayContext(array &$output, array &$message, int $counter): void
{
// Просмотр всех данных текущего сообщения
var_dump($message);
// Замена содержания сообщения при отображении (как пример)
$output['body'] = 'Новый текст сообщения';
// Отображение текущего порядкового номера сообщения на странице
var_dump($counter);
}
}
Пример с цветом группы⚓︎
А вот так, например, можно добавить полоски с цветом группы автора каждого сообщения:
<?php
public function prepareDisplayContext(array &$output): void
{
if (! empty($output['member']['group_color'])) {
echo '
<style>
#msg' . $output['id'] . ' .inner,
#msg' . $output['id'] . ' .custom_fields_above_signature {
border-top: 1px solid ' . $output['member']['group_color'] . ';
}
</style>';
}
}
Хук чрезвычайно полезен при работе с сообщениями темы. С помощью него можно выводить дополнительную информацию, изменять содержимое постов или добавлять стили. Например, в моде Karma Post Rating благодаря этому хуку отображаются рейтинг каждого сообщения и кнопки для изменения рейтинга.
