Одним из основных путей реализации cross-application интеграции с Invision Community является использование расширений. Проще говоря, расширение необходимо для реализации конкретного функционала в определенных частях сайта. Например, есть расширение, которое позволяет указать приложению, каким образом его содержимое будет обрабатываться системой поиска, или позволяет построить элементы для отображения на странице "Изменить пользователя" в админцентре. Если у вашего приложения есть расширение, то оно будет автоматически подгружено в соответствующих местах.
Создание расширений
Расширения создаются в Центре разработчика в админцентре. Invision Community будет автоматически генерировать файл классов в соответствующем каталоге вашего приложения; вам будет предложено ввести имя класса для расширения при его создании.
Каждое расширение требует различных методов, в зависимости от того, что делает расширение. Для получения дополнительной информации обратитесь к документации в исходных файлах в каталоге /extensions вашего приложения.
Типы расширений
/core
AdvertisementLocations
Позволяет определить новые рекламные места в вашем приложении.
Announcements
Облегчает контроль параметров объявлений внутри приложения (например, позволяя пользователю определять отдельные категории).
BBCode
Добавляет дополнительные теги BBCode для Invision Community, которые будет обрабатывать ваше приложение.
Build
Запуск дополнительного кода при построении приложения.
BulkMail
Позволяет приложению добавлять дополнительные теги замены для массовой рассылки.
CommunityEnhancements
Добавляет новые сторонние улучшения в разделе Расширения админцентра.
ContactUs
Добавление дополнительных полей для формы “Обратная связь” и обеспечение контроля над данными, отправляемыми из этой формы.
ContentRouter
Используется для указания элементов контента, используемых вашим приложением.
CreateMenu
Добавление новых записей в меню "+ Создать", в шапке сайта.
Dashboard
Добавление новых блоков в меню Панель управления вашего админцентра.
EditorLocations
Обработка прав на вложение, загруженного в редактор WYSIWYG в вашем приложении.
EditorMedia
Добавляет новые источники в "Вставить медиа" в WYSIWYG редактор
FileStorage
Определяет типы файлов которые могут быть загружены вашим приложением.
FrontNavigation
Позволяет добавить вкладки и меню в панель навигации.
GroupForm
Позволяет определить настройки для добавления к форме настроек группы.
GroupLimits
Определяет, как групповые настройки обрабатываются для вторичных групп.
IncomingEmail
Определяет способы обработки входящей почты для вашего приложения.
IpAddresses
Указывает области в вашем приложении, где записываются IP-адреса.
LiveSearch
Добавляет поддержку живого поиска в админцентре для вашего приложения.
MFAArea
Определяет область, для защиты мультифакторной аутентификацией.
MemberFilter
Позволяет установить новые способы фильтрации пользователей (например в форме массовой рассылки).
MemberForm
Позволяет установить новые настройки в форме изменения информации о пользователе.
MemberSync
Выполняет пользовательский код, когда аккаунт пользователя создается, редактируется или удаляется.
ModCp
Добавляет области к панели модератора.
ModCpMemberManagement
Добавляет фильтры на страницу управления пользователем в Центре модератора.
ModeratorPermissions
Определяет новые права доступа модераторов.
Notifications
Определяет типы уведомлений, которые будет отправлять ваше приложение.
OutputPlugins
Определяет новые плагины тэгов шаблонов приложения которые будет использовать ваше приложение.
Permissions
Устанавливает группы разрешений для интеграции с вашим приложением
Profile
Добавляет новые области контента в профили пользователей.
Queue
Определяет фоновые задачи, необходимые для вашего приложения.
Sitemap
Добавляет поддержку карты сайта вашим приложением.
Uninstall
Указывает какой код должен быть выполнен при удалении вашего приложения.
/nexus
Item
Позволяет продавать товары в Commerce.
Что делает расширение
Расширение AdvertisingLocations позволяет вам определять местоположения и настройки для рекламных объявлений, чтобы вы могли вставлять рекламные объявления в определенных местах вашего приложения. Например, приложение Форумы использует это расширение для показа объявлений после первого сообщения в теме и в списке тем.
Как использовать
При создании нового экземпляра этого расширения приложения, вам нужно будет определить два метода (которые уже будут определены шаблонно, если вы используете Центр разработчика для создания расширения).
/**
* Get the locations and the additional settings
*
* @param array $settings Current setting values
* @return array Array with two elements: 'locations' which should have keys as the location keys and values as the fields to toggle, and 'settings' which are additional fields to add to the form
*/
public function getSettings( $settings )
Метод getSettings принимает один параметр (массив) и должен вернуть массив с двумя элементами. Первый, с ключом 'locations', должен быть массивом с ключами, которые вы определили для расположения рекламных объявлений, и значения должны быть массивом ключей настроек для использования этих местоположений.
Первый, с ключевыми «местоположениями», должен быть массивом с его ключами, которые являются определяющими вами ключами местоположения рекламы, а значениями являются массив ключей настройки для использования для местоположения. Второй элемент должен использовать ключ 'settings' и определять массив объектов помощника форм. Например:
/**
* Get the locations and the additional settings
*
* @param array $settings Current setting values
* @return array Array with two elements: 'locations' which should have keys as the location keys and values as the fields to toggle, and 'settings' which are additional fields to add to the form
*/
public function getSettings( $settings )
{
return array(
'locations' => array( 'ad_fluid_index_view' => array( 'ad_fluid_index_view_number', 'ad_fluid_index_view_repeat' ) ),
'settings' => array(
new \IPS\Helpers\Form\Number( 'ad_fluid_index_view_number', ( isset( $settings['ad_fluid_index_view_number'] ) ) ? $settings['ad_fluid_index_view_number'] : 0, FALSE, array(), NULL, NULL, \IPS\Member::loggedIn()->language()->addToStack('ad_fluid_index_view_number_suffix'), 'ad_fluid_index_view_number' ),
new \IPS\Helpers\Form\Number( 'ad_fluid_index_view_repeat', ( isset( $settings['ad_fluid_index_view_repeat'] ) ) ? $settings['ad_fluid_index_view_repeat'] : 0, FALSE, array( 'unlimited' => -1 ), NULL, NULL, \IPS\Member::loggedIn()->language()->addToStack('ad_fluid_index_view_repeat_suffix'), 'ad_fluid_index_view_repeat' )
)
);
}
Второй метод в этом файле это parseSettings(), который является обратным вызовом, позволяющим настраивать значения параметров, которые сохраняются во время настройки администратором. Если настроек нет, этот метод должен просто вернуть пустой массив.
/**
* Return an array of setting values to store
*
* @param array $values Values from the form submission
* @return array Array of setting key => value to store
*/
public function parseSettings( $values )
{
return array(
'ad_fluid_index_view_number' => $values['ad_fluid_index_view_number'],
'ad_fluid_index_view_repeat' => $values['ad_fluid_index_view_repeat']
);
}
Затем вы можете использовать рекламное объявление в отображении с использованием loadByLocation метода \IPS\core\Advertisement. Например:
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_fluid_index_view' )}}
{$advertisement|raw}
{{endif}}