IP.Board:Образцы модификаций для 3.x.x
Материал из CSI
Данные примеры позволят наглядно объяснить некоторые параметры модификаций.
[править] Блок боковой панели
Используя этот пример, вы можете для себя создавать неограниченное количество блоков в боковой панели. Необходимо всего лишь заменять фразу CSOSideBarBlock001 на свою. Заменять нужно ВЕЗДЕ, где она встречается, даже в совмещённой с другими фразами.
Показать пример модификации "Блок боковой панели"
<?xml version="1.0" encoding="utf-8"?> <hookexport> <hookdata> <config> <hook_name><![CDATA[НАЗВАНИЕ_МОДИФИКАЦИИ]]></hook_name> <!-- Название вашей модификации. Отображается на странице списка модификаций. --> <hook_desc><![CDATA[ОПИСАНИЕ_МОДИФИКАЦИИ]]></hook_desc> <!-- Описание вашей модификации. Отображается на странице списка модификаций. --> <hook_author><![CDATA[АВТОР]]></hook_author> <!-- Автор модификации. --> <hook_email><![CDATA[E-MAIL]]></hook_email> <!-- Адрес электронной почты автора модификации. --> <hook_website><![CDATA[САЙТ]]></hook_website> <!-- Сайт автора модификации. Пример: http://domain.com --> <hook_update_check/> <!-- Адрес на скрипт обновлений модификации. --> <hook_requirements><![CDATA[a:4:{s:20:"hook_ipb_version_min";i:0;s:20:"hook_ipb_version_max";i:0;s:20:"hook_php_version_min";s:0:"";s:20:"hook_php_version_max";s:0:"";}]]></hook_requirements> <hook_version_human>1.0.0</hook_version_human> <!-- Внешняя версия модификации. --> <hook_version_long>10000</hook_version_long> <!-- Внутренняя версия модификации. --> <hook_extra_data/> <hook_key>CSOSideBarBlock001</hook_key> <!-- Ключ модификации. Должен быть уникален для каждой модификации. --> </config> </hookdata> <hookfiles> <file> <hook_file_real>CSOSideBarBlock001.php</hook_file_real> <!-- Название файла, создаваемого движком при импорте модификации. Помещается в папку "hooks". --> <hook_type>templateHooks</hook_type> <!-- Тип модификации. --> <hook_classname>CSOSideBarBlock001</hook_classname> <!-- Название класса модификации. Он фигурирует в файле, создаваемого движком при импорте модификации. --> <hook_data><![CDATA[a:6:{s:15:"classToOverload";s:0:"";s:9:"skinGroup";s:11:"skin_boards";s:12:"skinFunction";s:18:"boardIndexTemplate";s:4:"type";s:7:"foreach";s:2:"id";s:11:"side_blocks";s:8:"position";s:9:"outer.pre";}]]></hook_data> <hooks_source><![CDATA[<?php class CSOSideBarBlock001 { public $registry; public $settings; public $cache; public function __construct() { $this->registry = ipsRegistry::instance(); $this->settings =& $this->registry->fetchSettings(); $this->cache = $this->registry->cache(); $this->memberData =& $this->registry->member()->fetchMemberData(); } public function getOutput() { if ( !$this->settings['show_CSOSideBarBlock001'] || !in_array( $this->memberData['member_group_id'], explode(',', $this->settings['groups_CSOSideBarBlock001'] ) ) ) { return; } return $this->registry->output->getTemplate( 'boards' )->CSOSideBarBlock001(); } } ?>]]></hooks_source> </file> </hookfiles> <hookextras_settings> <setting> <conf_is_title>1</conf_is_title> <conf_title_title><![CDATA[Быстрая навигация]]></conf_title_title> <!-- Название блока настроек. --> <conf_title_desc><![CDATA[Настройки модификации.]]></conf_title_desc> <!-- Описание блока настроек. --> <conf_title_noshow>0</conf_title_noshow> <conf_title_keyword>CSOSideBarBlock001</conf_title_keyword> <!-- Ключевое слово блока настроек. --> <conf_title_app>core</conf_title_app> <!-- Название приложения. --> <conf_title_tab>Hooks</conf_title_tab> <!-- Название вкладки в настройках движка. Желательно использовать "Hooks". --> </setting> <setting> <conf_id/> <conf_title><![CDATA[Активировать модификацию]]></conf_title> <conf_description><![CDATA[Включить / отключить модификацию.]]></conf_description> <conf_group/> <conf_type>yes_no</conf_type> <conf_key>show_CSOSideBarBlock001</conf_key> <!-- Ключ данной настройки. Используется в файлах / шаблонах модификации. --> <conf_value/> <conf_default>1</conf_default> <conf_extra/> <conf_evalphp/> <conf_protected>1</conf_protected> <conf_position>1</conf_position> <conf_start_group><![CDATA[Основные настройки]]></conf_start_group> <conf_end_group>0</conf_end_group> <conf_add_cache>1</conf_add_cache> <conf_keywords/> <conf_title_keyword>CSOSideBarBlock001</conf_title_keyword> <!-- Ключевое слово данной настройки. --> <conf_is_title>0</conf_is_title> </setting> <setting> <conf_id/> <conf_title><![CDATA[Права доступа]]></conf_title> <conf_description><![CDATA[Отображение блока быстрой навигации определённым группам пользователей.]]></conf_description> <conf_group/> <conf_type>multi</conf_type> <conf_key>groups_CSOSideBarBlock001</conf_key> <!-- Ключ данной настройки. Используется в файлах / шаблонах модификации. --> <conf_value/> <conf_default/> <conf_extra>#show_groups#</conf_extra> <conf_evalphp><![CDATA[$key = 'groups_CSOSideBarBlock001'; if ( $save == 1) { if ( is_array($_POST[ $key ]) ) { $_POST[ $key ] = implode(",",$_POST[ $key ]); } else { $_POST[ $key ] = ""; } } if ( $show == 1 ) { $key .= '[]'; }]]></conf_evalphp> <conf_protected>1</conf_protected> <conf_position>2</conf_position> <conf_start_group/> <conf_end_group>1</conf_end_group> <conf_add_cache>1</conf_add_cache> <conf_keywords/> <conf_title_keyword>CSOSideBarBlock001</conf_title_keyword> <!-- Ключевое слово данной настройки. --> <conf_is_title>0</conf_is_title> </setting> <setting> <conf_id/> <conf_title><![CDATA[Заголовок]]></conf_title> <conf_description><![CDATA[Заголовок блока быстрой навигации.]]></conf_description> <conf_group/> <conf_type>input</conf_type> <conf_key>title_CSOSideBarBlock001</conf_key> <!-- Ключ данной настройки. Используется в файлах / шаблонах модификации. --> <conf_value/> <conf_default/> <conf_extra/> <conf_evalphp/> <conf_protected>1</conf_protected> <conf_position>3</conf_position> <conf_start_group><![CDATA[Содержание]]></conf_start_group> <conf_end_group>0</conf_end_group> <conf_add_cache>1</conf_add_cache> <conf_keywords/> <conf_title_keyword>CSOSideBarBlock001</conf_title_keyword> <!-- Ключевое слово данной настройки. --> <conf_is_title>0</conf_is_title> </setting> <setting> <conf_id/> <conf_title><![CDATA[Иконка]]></conf_title> <conf_description><![CDATA[Иконка заголовка блока.]]></conf_description> <conf_group/> <conf_type>input</conf_type> <conf_key>icon_CSOSideBarBlock001</conf_key> <!-- Ключ данной настройки. Используется в файлах / шаблонах модификации. --> <conf_value/> <conf_default/> <conf_extra/> <conf_evalphp/> <conf_protected>1</conf_protected> <conf_position>4</conf_position> <conf_start_group/> <conf_end_group>0</conf_end_group> <conf_add_cache>1</conf_add_cache> <conf_keywords/> <conf_title_keyword>CSOSideBarBlock001</conf_title_keyword> <!-- Ключевое слово данной настройки. --> <conf_is_title>0</conf_is_title> </setting> <setting> <conf_id/> <conf_title><![CDATA[Содержание]]></conf_title> <conf_description><![CDATA[Содержание блока быстрой навигации.]]></conf_description> <conf_group/> <conf_type>editor</conf_type> <conf_key>text_CSOSideBarBlock001</conf_key> <!-- Ключ данной настройки. Используется в файлах / шаблонах модификации. --> <conf_value/> <conf_default/> <conf_extra/> <conf_evalphp/> <conf_protected>1</conf_protected> <conf_position>5</conf_position> <conf_start_group/> <conf_end_group>1</conf_end_group> <conf_add_cache>1</conf_add_cache> <conf_keywords/> <conf_title_keyword>CSOSideBarBlock001</conf_title_keyword> <!-- Ключевое слово данной настройки. --> <conf_is_title>0</conf_is_title> </setting> </hookextras_settings> <hookextras_language/> <hookextras_modules/> <hookextras_help/> <hookextras_templates> <templates> <template_set_id>0</template_set_id> <template_group>skin_boards</template_group> <!-- Группа шаблонов. В неё будет помещён создаваемый шаблон. --> <template_content> <![CDATA[<div class='general_box clearfix'> <h3><img src='{$this->settings['img_url']}/{$this->settings['icon_CSOSideBarBlock001']}' alt='{$this->lang->words['icon']}' /> {$this->settings['title_CSOSideBarBlock001']}</h3> {$this->settings['text_CSOSideBarBlock001']} </div>]]> </template_content> <template_name>CSOSideBarBlock001</template_name> <!-- Название создаваемого шаблона. --> <template_data/> <template_updated/> <template_removable>0</template_removable> <template_added_to>0</template_added_to> <template_user_added>0</template_user_added> <template_user_edited>0</template_user_edited> </templates> </hookextras_templates> <hookextras_tasks/> <hookextras_database_create/> <hookextras_database_alter/> <hookextras_database_update/> <hookextras_database_insert/> </hookexport>