Работа расширений в CMS Punbb основана на принципе хуков – своеобразных крючков или триггеров, расположенных в коде форума и имеющих собственный уникальный идентификатор. Чтобы внедрить свой код в ядро форума (например, если вы хотите добавить на форум рекламу, изменить отображение какой-либо информации или добавить некую новую опцию), необходимо изначально найти хук, отвечающий за подключение кода в нужном месте, после чего создать расширение, где в файле manifest.xml (обязательный для любого расширения) вставить соответствующий код:
<hook id="hook_id" priority="5"><![CDATA[
//Здесь должен быть код расширения
]]></hook>,
где hook_id – это уникальный идентификатор хука, который необходимо найти в коде.
Для облегчения задачи по работе с хуками, существует очень удобный инструмент AnyCode Tool. Он позволяет внедрять необходимый код в форум непосредственно из админ-панели, без необходимости создания расширений.
Это заметно ускоряет работу с кодом, так как позволяет корректировать встраиваемый код и активировать/деактивировать его работу без постоянной переустановки расширения, которая требуется при каждом вносимом изменении.
Устанавливается AnyCode Tool также как и любое другое расширение. Необходимо закачать архив в директорию extensions, распаковать его и активировать на вкладке «Расширения» в админ-панели.
После этого в административной части форума появится еще одна вкладка AnyCode с двумя подпунктами Solutions (решения) и Hooks (хуки).
Включать и выключать код можно как на вкладке Solutions, так и на вкладке Hooks: Enable – включить, Disable – выключить.
Например, если вы хотите вставить код рекламы, который будет отображаться только для гостей, нужно действовать так.
Создаем Solutions с названием Google_Adsense. На вкладке Hooks в строку «Enter valid hook name» вводим уникальный идентификатор in_end. В поле «Enter hook code» пишем код
if ($forum_user['is_guest'])
{
echo 'КОД РЕКЛАМНОГО БЛОКА';
}