С помощью этого хука можно работать с сообщениями в темах форума, меняя как сами посты, так и контент между ними.
Расположение
Display.php
call_integration_hook('integrate_prepare_display_context', array(&$output, &$message, $counter));
Хук принимает в качестве параметра массивы $output, $message и $counter. В них содержатся, соответственно, отображаемое сообщение (конечный результат), текущее сообщение темы (исходный вариант) и счётчик (порядковый номер отображаемого сообщения, начинающийся с нуля на каждой странице темы).
Использование
Рассмотрим пример:
<?php
if (!defined('SMF'))
die('No direct access...');
class YourModName
{
// В этой функции подключаем используемые хуки
public function hooks()
{
add_integration_function('integrate_prepare_display_context', __CLASS__ . '::prepareDisplayContext#', false, __FILE__);
}
// Вызывается для каждого сообщения темы, перед отображением на странице
public function prepareDisplayContext(&$output, &$message, $counter)
{
// Просмотр всех данных текущего сообщения
var_dump($message);
// Замена содержания сообщения при отображении (как пример)
$output['body'] = 'Новый текст сообщения';
// Отображение текущего порядкового номера сообщения на странице
var_dump($counter);
}
}
А вот так, например, можно добавить полоски с цветом группы автора каждого сообщения:
<?php
// ...
public function prepareDisplayContext(array &$output)
{
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, например, отображается рейтинг каждого сообщения, а также выводятся кнопочки для изменения рейтинга.