Хук для подсвечивания нужного пункта в главном меню форума.
Расположение
Subs.php
call_integration_hook('integrate_current_action', array(&$current_action));
Этот хук появился в SMF 2.1 и работает совместно с хуком integrate_menu_buttons
, если для какой-нибудь кнопки указан атрибут action_hook.
Использование
Например, ваша модификация добавляет на форум область Задачи (action=tasks), но без кнопки в главном меню. При этом вы хотите, чтобы когда пользователь находился на странице задач, в меню подсвечивался пункт Начало. Реализуем это:
<?php
if (!defined('SMF'))
die('No direct access...');
class YourModName
{
// В этой функции подключаем используемые хуки
public function hooks()
{
add_integration_function('integrate_menu_buttons', __CLASS__ . '::menuButtons#', false, __FILE__);
add_integration_function('integrate_current_action', __CLASS__ . '::currentAction#', false, __FILE__);
}
// Определяем подключение хука integrate_current_action для пункта «Начало» в меню
public function menuButtons(&$buttons)
{
if (!empty($buttons['home']))
$buttons['home']['action_hook'] = true;
}
// А здесь получаем подсвечиваемый пункт меню, при заходе на страницу «Задачи»
public function currentAction(&$current_action)
{
global $context;
if ($context['current_action'] == 'tasks')
$current_action = 'home';
}
}
Как видите, то, что раньше можно было сделать только правкой исходных файлов движка, в SMF 2.1 уже настраивается через хуки. Пример работы данного хука можно увидеть в моде Optimus, при посещении страницы ключевых слов — в меню будет подсвечиваться пункт «Начало» (или «Форум», если установлен мод портала).