Наверное, каждый администратор форума 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 (смайл)
Всего доброго!
Выдает синтаксическую ошибку в строке 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’);
?>