Перейти к контенту
  • записи
    33
  • комментариев
    10
  • просмотров
    170 305

IP.Board 3.1: Система хуков


News Bot

1 693 просмотра

В IP.Board 3 мы представили систему хуков, цель разработки которой уменьшить количество изменений файлов при установке модификаций и сделать их удобными для установки. Мы разработали максимально гибкую систему в основном за счет использования хуков на основе HTML-логики, которая используется фактически при любом выводе контента. Однако мы знали, что еще оставались случаи, когда необходимы были изменение файла, чтобы внести изменения в ту часть системы, которая не является шаблоном или файлом действия.

 

Одной из наших первоначальных целей в IP.Board 3.1 было расширение системы хуков, чтобы уменьшить необходимые изменения файлов, а также упростить их установку. Мы прочитали все отзывы разработчиков модификаций и учли большинство из них в 3.1. Далее краткая информация о сделанных изменениях:

 

Новые типы хуков

 

Нашей первой целью было распространить систему хуков на те части форума, где она до сих пор не была доступной. И теперь мы представляем два новых типа хуков:

 

Хук данных

 

Модификациям часто необходимо иметь возможность добавлять данные в запросы вставки/обновления, которые исполняются IPB, на данный момент решать такую задачу можно только путем запуска дополнительного запроса вставки/обновления самим хуком. Для решения этой проблемы мы добавили новый тип хука, называемый Хук Данных. Он позволяет вам получить массив данных до того, как вы вставите его в базу данных. Например, вы можете создать хук, который будет получать данные сообщений, до того, как вы вставите их в таблицу, это даст вам возможность добавлять любые необходимые данные и изменять сохраненные данные.

 

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

 

В отличие от стандартных хуков, которые генерируются автоматически, места вызова хуков данных вручную указаны в коде. Если у вас есть пожелания, где бы вы хотели видеть их размещенными, оставьте нам сообщение в этом блоге. На данный момент хуки данных используются в библиотеке создания сообщений, в библиотеке создания личных сообщений и в некоторых местах профиля.

 

Хук библиотек

 

Существует много классов, используемых в IPB , которые недоступны для хуков, так как они не являются действиями или шаблонами. Но часто бывает нужно добавить какие-то свои методы или изменить существующие. Это привело к появлению второго типа хуков, который мы добавили в 3.1 – хуков библиотек. Данный тип позволяет расширить библиотеки, которыми вы пользуетесь через IPB; ярким примером такой библиотеки является class_forum. Метод работы такой же, как у загрузчика действий, ваш хук расширяет выбранную библиотеку и позволяет добавить, или заменить метод на ваш собственный. Вам необходимо вызвать родительский метод, если вы переопределяете метод в хуке.

 

Чтобы позволить данным хукам работать мы внесли изменения в механизм подключения библиотек. Мы постарались изменить большинство существующих мест подключения библиотек на новый тип, но вполне вероятно, что где-то мы забыли это сделать.

 

Другие изменения

 

Хуки в AJAX запросах

 

В версии 3.0 все, что возвращалось с использованием AJAX не проходило через систему хуков. В 3.1 мы устранили этот недостаток и теперь вы можете перехватывать любое содержимое, получаемое через AJAX.

 

Экспорт CSS файлов

 

Эта новая возможность при экспорте хуков, позволяющая вам устанавливать CSS файлы, которые используются данным хуком. CSS файлы могут быть включены в xml хука, а затем импортированы вместе с хуком и сохранены в файловую систему.

 

Доступ к данным функции

 

Один из часто встречающихся запросов - это способ получить данные, передаваемые в функцию шаблона, в IP.Board 3.1 это стало возможным. Активные хуки имеют доступ к данным функции через специальный атрибут класса - functionData. Для сбережения ресурсов, данные сохраняются только для функций, имеющих активные хуки. Пример того, как получить доступ к данным функции topicViewTemplate:

 

Описание функций:

function topicViewTemplate($forum, $topic, $post_data, $displayData) {

 

Все эти данные будут доступны вашему хуку через функцию $functionData:

$this->registry->output->getTemplate('topic')->functionData['topicViewTemplate']['forum']
$this->registry->output->getTemplate('topic')->functionData['topicViewTemplate']['topic']

 

В заключение

 

Мы также сделали несколько незначительных настроек в системе хуков, включая обновления интерфейса панели управления администратора, расширение функциональных возможностей, схему быстрого отключения/включения всех хуков, изменение позиции хуков с возможностью IN_DEV и другие.

 

Оригинал статьи: http://community.invisionpower.com/blog/1174/entry-3884-ipboard-310-dev-update-hook-system/

0 комментариев


Рекомендуемые комментарии

Комментариев для отображения не найдено.

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.