Topic: Как добавить свой хук в расширение
Не секрет, что хуки помогают внедрять какой либо код в файлы. Но скачанное и установленное расширение не всегда может удовлетворять нашим требованиям. Бывает так, что нам хотелось иметь дополнительную функцию в этом расширении. Например добавить какую нибудь кнопочку в каком либо месте, или же просто добавить в расширение HTML чтобы он отобразился в какой то части страницы. Вот как раз в этом нам помогут хуки.
Итак поехали! Давайте к примеру возьмем расширение Pan Smiles. Допустим нам понадобилось вывести для этого расширения, где нибудь внизу формы набора текста сообщения HTML код. Как нам это сделать. Ну давайте поэтапно.
Во первых, давайте определимся с местом вывода кода. Если это нижняя часть ввода текста сообщения, то открываем файл viewtopic.php.
Ищем блок TEXTAREA. Почти в конце файла вы найдете следующее содержимое:
<?php ($hook = get_hook('vt_quickpost_pre_fieldset')) ? eval($hook) : null; ?>
<fieldset class="frm-group group1">
<legend class="group-legend"><strong><?php echo $lang_common['Write message legend'] ?></strong></legend>
<?php ($hook = get_hook('vt_quickpost_pre_message_box')) ? eval($hook) : null; ?>
<div class="txt-set set1">
<div class="txt-box textarea required">
<label for="fld1"><span><?php echo $lang_common['Write message'] ?></span></label>
<div class="txt-input"><span class="fld-input"><textarea id="fld1" name="req_message" rows="7" cols="95" required spellcheck="true" ></textarea></span></div>
</div>
</div>
<?php ($hook = get_hook('vt_quickpost_pre_fieldset_end')) ? eval($hook) : null; ?>
</fieldset>
Мы видим 3 хука. Нам нужен последний, его ID vt_quickpost_pre_fieldset_end.
Копируем ID хука и идем в manifest.xml
Откройте сам файл manifest.xml и проверьте не присутствует ли уже такой ID в манифесте. Проверяем, если нет, то создаем блок для его подключения. Добавляем между тегами
<hooks>
!!! Здесь ваш новый хук
</hooks>
следующее содержимое:
<hook id="vt_quickpost_pre_fieldset_end"><![CDATA[
//здесь работает PHP, поэтому не забываем остановить его.
?>
<!-- Здесь будет находится ваш HTML код -->
<?php
// Затем вновь включаем обработку PHP
]]></hook>
После того как вы добавили новый хук, а также заполнили его область содержимым, а также после любых манипуляций с хуками расширений необходимо обновить хуки расширений, чтобы действия вступили в силу. Это можно сделать из под админки - Расширения - пункт Обновить хуки (для этого на форуме должно быть установлено расширение Pun Admin Manage Extensions Improved)