phpBB – добавить ссылку в меню?

Наверное, каждый администратор форума phpBB рано или поздно добавляет сверху дополнительные ссылки. Вот и у меня пришло время для вопроса – а как добавить ссылку вверху форума (в шапке) phpBB рядом с FAQ, Пользователями, Выходом?

Казалось бы – довольно простая задача, но не тут-то было. phpBB использует переменные, и эта элементарная для большинства движков доработка требует определенных знаний.

Я прочитал форумы поддержки и выяснил, что 90% администраторов (судя по форумам поддержки) прописывает ссылку довольно варварским способом –

саму ссылку вставляют через файл includes/functions.php , потом прописывают надпись ссылки в language/ru/common.php  и в конце цепляют ее в файле шаблона.

Чем плох такой вариант? А вот чем – с подобным подходом труднее ставить МОДы и обновлять движок, т.к. фактически вы изменяете ядро форума. Очень вероятно, что при обновлении форума до новой версии (или не дай боги ветки) добавленный функционал слетит, и вам придется все допиливать по новой.

Адекватное решение этой проблемы:
В phpBB существует так называемая Hook system, которая позволяет создавать надстройки форума вне его ядра. Не буду ударяться в конкретику, почитать подробнее вы можете в файле docs/hook_system.html

Итак, чтобы добавить ссылку через хук, нужно:
1) Все хуки хранятся в папке includes/hooks . Создадим там файл hook_links.php со следующим содержимым:

<?php
function gen_links()
{
global $phpbb_root_path, $phpEx, $template, $user;
$user->add_lang(‘mods/links’);
$template->assign_vars(array(
‘U_NEW_LINK’ => append_sid(“{$phpbb_root_path}link.$phpEx”)
));
}

$phpbb_hook->register(array(‘template’, ‘display’), ‘gen_links’);
?>

Из всего этого венегрета вам нужно изменить строку ‘U_NEW_LINK’ => append_sid(“{$phpbb_root_path}link.$phpEx”), где U_NEW_LINK – название переменной, а append_sid – это функция, которая возвращает строку, содержащую URL с идентификатором сессии.

Если вы хотите вставить ссылку на внутреннюю страницу, например на какую-то тему (я сделал ссылку на правила форума), то эта строка будет иметь примерно такой вид:

‘U_NEW_PRAVILA’    => append_sid($phpbb_root_path.’viewtopic.’.$phpEx, ‘f=21&t=41’)

Если вы хотите вставить внешнюю ссылку – используйте такую конструкцию:

‘U_NEW_PRAVILA’    => append_sid(“http://google.com/”)

2) Теперь нужно создать языковой файл, в котором мы пропишем текст ссылки. Используем для этого папку language/ru/mods , где создадим links.php со следующим содержимым:

<?php
$lang = array_merge($lang, array(
‘NEW_LINK’ => ‘Нажми меня’
));
?>

В моем случае я делал ссылку на правила форума, поэтому переменная имела такой вид:

‘NEW_PRAVILA’    => ‘Правила форума’

3) Теперь используем наши переменные в файле шаблона overall_header.html . Это удобно сделать в админке: Стили – Шаблоны – Изменить и выбираем наш файл.

Теперь по поиску ищем “FAQ” и по аналогии вставляем следующую строку:

<li><a href=”{U_NEW_PRAVILA}”>{L_NEW_PRAVILA}</a></li>

Для тега li вы можете прописать свойство class=”…”, где вместо троеточия можно вставить иконку, например, icon-subscribe .

4) Теперь очистите кеш (это можно сделать на главной странице админки), и вы увидите вашу заветную кнопку в phpBB (смайл)

Всего доброго!

This entry was posted in phpBB. Bookmark the permalink.

One Response to phpBB – добавить ссылку в меню?

  1. Аня says:

    Выдает синтаксическую ошибку в строке 15(первый пункт), после изменения то что вы написали в инструкции пропадает весь форум и админка, но стоит удалить файл
    hook_links.php все снова восстанавливается
    1) Все хуки хранятся в папке includes/hooks . Создадим там файл hook_links.php со следующим содержимым:

    add_lang(‘mods/links’);
    $template->assign_vars(array(
    ‘U_NEW_PRAVILA’ => append_sid(“http://google.com/”)
    ));
    }

    $phpbb_hook->register(array(‘template’, ‘display’), ‘gen_links’);
    ?>

Leave a Reply

Your email address will not be published. Required fields are marked *