Плагины для GetSimple позволяют легко модифицировать сайты, улучшать их вид и функциональность. Таким образом, система получает дополнительные возможности при неприкосновенности функций ядра.
Эта секция описывает составные части любого плагина. Для примера мы возьмем простой плагин, который выводит строку “Привет, мир!” (Hello World) на каждой странице сайта. Скачать плагин можно здесь.
<?php /* Plugin Name: Hello World Description: Выводит "Привет, мир!" в подвале темы (footer) Version: 1.0 Author: Chris Cagle Author URI: http://www.cagintranet.com/ */ # получение корректного идентификатора плагина $thisfile=basename(__FILE__, ".php"); # регистрируем плагин в системе register_plugin( $thisfile, //идентификатор плагина 'Hello World', //Название плагина '1.0', //Версия плагина 'Chris Cagle', //автор плагина 'http://www.cagintranet.com/', //сайт автора 'Finds email addresses in content and components and "hides" them', //краткое описание плагина 'theme', //тип страницы – на какой из вкладок административной панели появится плагин 'hello_world_show' //главная функция плагина (функция администрирования) ); # activate filter/активируем фильтр add_action('theme-footer','hello_world'); # Добавляем ссылку на вкладку Темы add_action('theme-sidebar','createSideMenu',array($thisfile,'Hello World description')); # Теперь – функции плагина function hello_world() { echo '<p>Привет, мир!</p>'; } function hello_world_show() { echo '<p>Хочу вывести строку «Привет, мир!» во всех подвалах страниц всех тем. Такой вот я загадочный.</p>'; } ?>
В принципе, можно просто прописать имя файла плагина, но разработчики рекомендуют сразу же после информации о плагине размещать в файле следующий код:
# получение корректного идентификатора плагина $thisfile=basename(__FILE__, ".php");
Следующий фрагмент выводит информацию о вашем плагине на вкладку Плагины. Кроме того, в коде предписывается, на какой вкладке административной панели будет осуществляться управление вашим плагином (в нашем случае это - ‘Тема/theme’).
# register plugin register_plugin( $thisfile, //идентификатор плагина 'Hello World', //Название плагина '1.0', //Версия плагина 'Chris Cagle', //автор плагина 'http://www.cagintranet.com/', //сайт автора 'Finds email addresses in content and components and "hides" them', //краткое описание плагина 'theme', //тип страницы – на какой из вкладок административной панели появится плагин 'hello_world_show' //главная функция плагина );
На заметку: $thisfile не будет работать внутри хук-функций, таких, как в нашем примере hello_world или hello_world_show, так как внутри функций эта переменная будет содержать наименование плагина, загруженного перед текущим.
Этот код привязывает вашу пользовательскую функцию к определенному хуку или фильтру.
# активировать фильтр add_action('theme-footer','hello_world',array());
Синтаксис: add_action('наименование хука','имя функции для привязки', массив аргументов);
Этот фрагмент кода выводит на экран ссылку на страницу плагина в административной панели (это – особый случай для вызова add_action):
# добавляем ссылку во вкладку Тема add_action('theme-sidebar','createSideMenu',array($thisfile,'Hello World description'));
Синтаксис: add_action('Имя_Вкладки-sidebar','createSideMenu',array($thisfile,'Текст ссылки/пункта бокового меню'));
На заметку: При клике по данному пункту будет вызвана соответствующая вкладка панели и главная функция плагина (они уже были прописаны в секции плагина register_plugin). Таким образом, в большинстве случаев имя действия (theme-sidebar) и тип страницы (theme/Тема) должны совпадать.
На заметку: В версии 3.1 допускается создание нескольких пунктов бокового меню на вкладке административной панели путем добавления экшн-хука или действия к функции add_action .
# добавляем ссылки к вкладке Тема add_action('theme-sidebar','createSideMenu',array($thisfile,'Текст бокового меню 1'),'действие1/action1'); add_action('theme-sidebar','createSideMenu',array($thisfile,' Текст бокового меню 2'),'действие2/action2');
Таким образом, в боковом сайдбаре вкладки Тема появятся два пункта меню. Задача разработчика – обеспечить их соответствующими действиями (action).
Функции этой секции плагина представляют собой либо пользовательские экшн-функции (действия), либо фильтр-функции (фильтры), привязываемые к хукам и фильтрам системы.
# Теперь – функции плагина function hello_world() { echo '<p>Привет, мир!</p>'; } function hello_world_show() { echo '<p>Хочу вывести строку «Привет, мир!» во всех подвалах страниц всех тем. Такой вот я загадочный.</p>'; }
Самый простой плагин состоит только из одного файла: мой_плагин.php, но если ваш плагин имеет в составе еще и другие файлы, их следует размещать в папке мой_плагин.
Если плагин обеспечивает многоязычную поддержку, языковые файлы размещаются в подпапке lang. С дополнительной информацией по интернационализации можно ознакомиться в этом разделе ВИКИ.
Точно так же в папке мой_плагин можно создавать поддиректории для хранения js-скриптов, стилей, графики и пр. Для всех директорий, к файлам которых браузер должен иметь прямой доступ, следует добавить .htaccess-файл со следующей строкой:
Allow from all
Таким образом, образец структуры файлов и папок вашего плагина мой_плагин, содержащего дополнительные php-файлы и графику и поддерживающего несколько языков, выглядит следующим образом:
- my_plugin.php - my_plugin (папка вашего плагина) - .htaccess (одна строка: Deny from all) - common_functions.php - lang (поддиректория) - .htaccess (одна строка: Deny from all) - en_US.php - de_DE.php - it_IT.php - img (поддиректория) - .htaccess (одна строка: Allow from all) - add.png - delete.png - edit.png
Если в процессе работы плагина возникает необходимость сохранять данные на сервере, разработчики рекомендуют делать это внутри папки, путь которой определен как системная константа GSDATAOTHERPATH. Например:если вашему плагину требуется сохранить идентификатор ресурса UA-XXXXX для Google, его следует сохранить в папке /Путь_к_GetSimple/data/other/папка_моего_плагина/ua-data.txt, где папка_моего_плагина – это созданная плагином папка, а ua-data.txt – файл, который хранит полученный идентификатор.
При сохранении информации или доступе к файлам и папкам GetSimple всегда следует использовать системные константы путей. Их список можно посмотреть в файле /admin/inc/common.php или здесь.
Начиная с версии 3.1, у разработчиков плагинов появилась возможность ставить в очередь и загружать скрипты и стили как во фронтенд, так и в бэкенд. Механизм системы обеспечивает загрузку только одного экземпляра определенного скрипта или стиля. Кроме того, у разработчика появляется возможность включать свои скрипты и стили как отдельные файлы в состав плагина.
Разработчики GetSimple рекомендуют размещать дополнительные скрипты и стили в папке с именем вашего плагина в следующем порядке:
GetSimple 3.1 содержит конфигурацию для постановки в очередь на загрузку следующих скриптов и стилей:
Скрипты
Стили
На заметку: Jquery, Fancybox и getsimple загружаются автоматически для каждой страницы административного бэкенда.
Для применения скрипта его необходимо зарегистрировать в системе:
// register_script($handle, $src, $ver, $in_footer=FALSE) // $handle название скрипта, должно быть уникальным для системы // $src путь к файлу скрипта для загрузки // $ver версия скрипта // $in_footer если true – загрузить скрипт в футер (подвал) страницы register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', '1.7.1', FALSE);
Приведенный выше код регистрирует CDN-версию JQiery, но его загрузки не произойдет, пока он не будет помещен в очередь.
Для постановки зарегистрированного скрипта в очередь и его загрузки используйте следующий код:
// queue_script($name,$where); // $name название скрипта для загрузки // $where т.е. куда - GSFRONT для темы или внешней части сайта, GSBACK для раздела администрирования или бэкенда, GSBOTH и во фронтенд, и в бэкенд. queue_script('jquery',GSBOTH);
Приведенный выше код загрузит библиотеку JQuery в вашу тему, а также в административную панель
Для регистрации скрипта из папки вашего плагина используйте следующий код:
register_script('pluginscriptname', $SITEURL.'plugins/my_plugin_folder/your.script.js', '0.1', FALSE);
В окончательной версии плагина, если для фронтенда требуется библиотека Jquery, поставьте ее в очередь используя параметр GSFRONT. Независимо от того, сколько плагинов требуют эту библиотеку, она будет загружена только один раз.
Для использования собственных файлов стиля вы должны зарегистрировать их в системе.
// register_style($handle, $src, $ver) // $handle название стиля, должно быть уникальным для системы // $src путь к файлу стиля для загрузки // $ver версия // $media тип media – тип носителя или устройства register_style('getsimple', $SITEURL.$GSADMIN.'/template/style.php', GSVERSION, 'screen');
Приведенный выше код регистрирует CSS-стиль, но его загрузка не происходит, пока он не будет помещен в очередь.
Для постановки зарегистрированного стиля в очередь и его загрузки используйте следующий код:
// queue_style($name,$where); // $name название стиля для загрузки // $where т.е. куда - GSFRONT для темы или внешней части сайта, GSBACK для раздела администрирования или бэкенда, GSBOTH и во фронтенд, и в бэкенд. queue_style('getsimple',GSBOTH);
На главную Содержание