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 (смайл)

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


Запись опубликована в рубрике phpBB. Добавьте в закладки постоянную ссылку.

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

  1. Аня говорит:

    Выдает синтаксическую ошибку в строке 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’);
    ?>

Добавить комментарий для Аня Отменить ответ

🇬🇧 Attention! Comments with URLs/email are not allowed.
🇷🇺 Комментарии со ссылками/email удаляются автоматически.