Хук integrate_menu_buttons

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

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

Subs.php

call_integration_hook('integrate_menu_buttons', array(&$buttons));

Хук принимает в качестве параметра массив $buttons, в котором содержится структура главного меню. Заметьте, что это меню кэшируется, а значит ваши изменения могут отобразиться не сразу.

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

Подключение хука через базу данных:

Хуки легко подключаются с помощью PHP-файла (например, hooks.php), вызываемого при установке/удалении вашего приложения:

<?php

if (file_exists(dirname(__FILE__) . '/SSI.php') && !defined('SMF'))
    require_once(dirname(__FILE__) . '/SSI.php');
elseif (!defined('SMF'))
    exit('<b>Error:</b> Cannot install - please verify you put this in the same place as SMF\'s index.php.');

$hooks = array(
    'integrate_pre_include' => '$sourcedir/MyApplication.php',
    'integrate_menu_buttons' => 'example'
);

if (!empty($context['uninstalling']))
    $call = 'remove_integration_function';
else
    $call = 'add_integration_function';

foreach ($hooks as $hook => $function)
    $call($hook, $function);

В примере выше происходит добавление хука integrate_pre_include, подключающего нужный вам файл на любой странице SMF, и хука integrate_menu_buttons, вызывающего функцию example, находящуюся в файле /Sources/MyApplication.php. $sourcedir — глобальная переменная, содержащая полный путь к директории /Sources форума. Вместо $sourcedir можно использовать переменную $boarddir, содержащую путь к корню форума. Информация об указанных хуках добавляется в базу данных (таблица smf_settings).

Подключение хука путем вызова в PHP-файле:

add_integration_function('integrate_menu_buttons', 'example', false);

Пример функции example (файл MyApplication.php):

<?php

if (!defined('SMF'))
    die('Hacking attempt...');

function example(&$buttons)
{
    // Прячем пункт «Поиск»
    unset($buttons['search']);
}

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

Поделиться
Отправить
Класснуть
Вотсапнуть