User Tools

Site Tools


ru:plugins:creation

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ru:plugins:creation [2013/10/08 11:26]
Arkady [Anatomy of a Plugin]
ru:plugins:creation [2013/10/15 10:35] (current)
vladislav
Line 49: Line 49:
  
  
-===== Variable Setup =====+===== Переменные плагинов ​=====
  
-This code could always be hardcodedbut it's best if you define the below code right after your registration.+В принципеможно просто прописать имя файла плагина,​ но разработчики рекомендуют сразу же после информации о плагине размещать в файле следующий код:
  
 <​code>​ <​code>​
-get correct id for plugin+получение корректного идентификатора плагина
 $thisfile=basename(__FILE__,​ "​.php"​);​ $thisfile=basename(__FILE__,​ "​.php"​);​
 </​code>​ </​code>​
  
-This code is what is used to display your plugin on the "​Plugins"​ tab of the control panelIt also allows you to set the type of page your plugin should be shown as.+Следующий фрагмент выводит информацию о вашем плагине на вкладку **Плагины**Кроме того, в коде предписывается,​ на какой вкладке административной панели будет осуществляться управление вашим плагином (в нашем случае это - ‘//​Тема/​theme//​’).
  
 <​code>​ <​code>​
 # register plugin # register plugin
 register_plugin( register_plugin(
- $thisfile, //Plugin id + $thisfile, //идентификатор плагина 
- '​Hello World',​ //Plugin name + '​Hello World',​ //Название плагина 
- '​1.0',​ //Plugin version + '​1.0',​ //Версия плагина 
- '​Chris Cagle', ​ //Plugin author + '​Chris Cagle', ​ //автор плагина 
- '​http://​www.cagintranet.com/',​ //author website + '​http://​www.cagintranet.com/',​ //сайт автора 
- '​Finds email addresses in content and components and "​hides"​ them', //Plugin description + '​Finds email addresses in content and components and "​hides"​ them', //краткое описание плагина 
- '​theme',​ //page type + '​theme',​ //тип страницы – на какой из вкладок административной панели появится плагин 
- '​hello_world_show' ​ //main function+ '​hello_world_show' ​ //главная функция плагина
 ); );
 </​code>​ </​code>​
  
-**Note:** //​$thisfile// ​will not work within hook functions like //​hello_world// ​or //​hello_world_show//, ​rather it will be the name of the plugin last loaded.+**На заметку:** //​$thisfile// ​не будет работать внутри хук-функций,​ таких, как в нашем примере ​//​hello_world// ​или ​//​hello_world_show//, ​так как внутри функций эта переменная будет содержать наименование плагина,​ загруженного перед текущим
  
 +===== Хуки и фильтры =====
  
-===== Custom Functions =====+Этот код привязывает вашу пользовательскую функцию к определенному хуку или фильтру.
  
 +<​code>​
 +# активировать фильтр
 +add_action('​theme-footer','​hello_world',​array()); ​
 +</​code>​
 +
 +**Синтаксис**:​ add_action('//​наименование хука//','//​имя функции для привязки//',​ //​массив аргументов//​); ​
 +
 +Этот фрагмент кода выводит на экран ссылку на страницу плагина в административной панели (это – особый случай для вызова //​add_action//​):​
 +
 +<​code>​
 +# добавляем ссылку во вкладку Тема
 +add_action('​theme-sidebar','​createSideMenu',​array($thisfile,'​Hello World description'​));​
 +</​code>​
 +
 +**Синтаксис**:​ add_action('//​Имя_Вкладки-sidebar//','//​createSideMenu//',//​array($thisfile,'​Текст ссылки/​пункта бокового меню'​)//​);​
 +
 +
 +
 +**На заметку**:​ При клике по данному пункту будет вызвана соответствующая вкладка панели и главная функция плагина (они уже были прописаны в секции плагина //​register_plugin//​). Таким образом,​ в большинстве случаев имя действия (//​theme-sidebar//​) и тип страницы (//​theme/​Тема//​) должны совпадать.
 +
 +**На заметку**:​ В версии 3.1 допускается создание нескольких пунктов бокового меню на вкладке административной панели путем добавления экшн-хука или действия к функции add_action . 
 +
 +<​code>​
 +# добавляем ссылки к вкладке Тема ​
 +add_action('​theme-sidebar','​createSideMenu',​array($thisfile,'​Текст бокового меню 1'​),'​действие1/​action1'​);​
 +add_action('​theme-sidebar','​createSideMenu',​array($thisfile,'​ Текст бокового меню 2'​),'​действие2/​action2'​);​
 +</​code>​
 +
 +Таким образом,​ в боковом сайдбаре вкладки **Тема** появятся два пункта меню. Задача разработчика – обеспечить их соответствующими действиями (//​action//​).
 +
 +===== Функции плагина =====
  
-The functions in this section would be the functions that are called as part of the registration[[plugins:​hooks_filters|hook or a filter]].+Функции этой секции плагина представляют собой либо пользовательские экшн-функции (действия)либо фильтр-функции (фильтры),​ привязываемые к [[ru:plugins:​hooks_filters|хукам и фильтрам системы]].
  
 <​code>​ <​code>​
-functions+Теперь – функции плагина
 function hello_world() { function hello_world() {
- echo '<​p>​Hello World</​p>';​+ echo '<​p>​Привет,​ мир!</​p>';​
 } }
  
 function hello_world_show() { function hello_world_show() {
- echo '<​p>​I like to echo "Hello World" in the footers of all themes.</​p>';​+ echo '<​p>​Хочу вывести строку «Привет,​ мир!» во всех подвалах страниц всех тем. Такой вот я загадочный.</​p>';​
 } }
 </​code>​ </​code>​
  
  
-===== Standard for File & Folder Creation ​=====+===== Правила создания папок и файлов ​=====
  
-==== Additional plugin files ====+==== Дополнительные файлы плагинов ​====
  
-A simple plugin will consist of only one file, e.g. ''​my_plugin.php''​. +Самый простой плагин состоит только из одного файла: //​мой_плагин.php//, но если ваш плагин имеет в составе еще и другие файлы, их следует размещать в папке //​мой_плагин//​.
-But if your plugin consists of more than this main ''​my_plugin.php''​ file you should put them into a directory ''​my_plugin''​.+
  
-If your plugin supports multiple languagesyou should put the language files into a sub folder ''​lang''​For more information see [[plugins:​i18n|Languages (I18N)]].+Если плагин обеспечивает многоязычную поддержкуязыковые файлы размещаются в подпапке //lang//С дополнительной информацией по интернационализации можно ознакомиться ​[[ru:plugins:​i18n|в этом разделе]] ВИКИ. 
 + 
 +Точно так же в папке //​мой_плагин//​ можно создавать поддиректории для хранения js-скриптов,​ стилей,​ графики и пр. Для всех директорий,​ к файлам которых браузер должен иметь прямой доступ,​ следует добавить //​.htaccess-файл//​ со следующей строкой:​
  
-Similarly you can have subfolders for javascript files, images, etc. For all directories whose files need to be directly accessed by the browser, add a ''​.htaccess''​ file for Apache with the line 
 <​code>​ <​code>​
 Allow from all Allow from all
 </​code>​ </​code>​
  
-Thus a sample plugin structure for a plugin ''​my_plugin''​ with additional ​php files and images that supports multiple languages might be:+Таким образом,​ образец структуры файлов и папок вашего плагина мой_плагин,​ содержащего дополнительные ​php-файлы и графику и поддерживающего несколько языков,​ выглядит следующим образом:
 <​code>​ <​code>​
 - my_plugin.php - my_plugin.php
-- my_plugin (directory+- my_plugin (папка вашего плагина
-   - .htaccess (with one line: Deny from all)+   - .htaccess (одна строка: Deny from all)
    - common_functions.php    - common_functions.php
-   - lang (directory)  +   - lang (поддиректория)  
-      - .htaccess (with one line: Deny from all)+      - .htaccess (одна строка: Deny from all)
       - en_US.php       - en_US.php
       - de_DE.php       - de_DE.php
       - it_IT.php       - it_IT.php
-   - img (directory+   - img (поддиректория
-      - .htaccess (with one line: Allow from all)+      - .htaccess (одна строка: Allow from all)
       - add.png       - add.png
       - delete.png       - delete.png
Line 127: Line 159:
  
  
-==== Data & Settings ​====+==== Хранение данных и настроек ​====
  
-If you need to save your data to a file on the serverwe recommend saving it to a new folder within the ''​GSDATAOTHERPATH''​ pathFor exampleIf your plugin needs to save the Google Analytics'​s ​UA-XXXXX ​id for the siteit would be best if you saved it within the folder ''​/path/to/getsimple/​data/​other/​my_plugin_folder/​ua-data.txt''​where ''​/my_plugin_folder/''​ is the folder you create and ''​ua-data.txt''​ is the file that holds your data.+Если в процессе работы плагина возникает необходимость сохранять данные на сервере,​ разработчики рекомендуют делать это внутри папкипуть которой определен как системная константа **GSDATAOTHERPATH**Например:если вашему плагину требуется сохранить идентификатор ресурса ​UA-XXXXX ​ ​для Googleего следует сохранить в папке ​///Путь_к_GetSimple/​data/​other/​папка_моего_плагина/​ua-data.txt//где //​папка_моего_плагина//​ – это созданная плагином папка, а //​ua-data.txt// – файл, который хранит полученный идентификатор.
  
-When saving or accessing files and folders within a GetSimple ​installation,​ it is always best to use the defined constants set by the systemYou can get the list of contents from the ''​/​admin/​inc/​common.php''​ file, or by looking at our [[http://​code.google.com/​p/​get-simple-cms/​source/​browse/​trunk/​admin/​inc/​common.php|svn copy of it]].+При сохранении информации или доступе к файлам и папкам ​GetSimple ​всегда следует использовать системные константы путейИх список можно посмотреть в файле ///​admin/​inc/​common.php// [[http://​code.google.com/​p/​get-simple-cms/​source/​browse/​trunk/​admin/​inc/​common.php|или здесь]].
  
-===== Scripts & Styles ​=====+===== Скрипты и стили ​=====
  
-As of GetSimple ​3.1 plugin writers have the ability to queue and load scripts and styles on your theme or the back end adminThis allows you to ensure that libraries are loaded only onceIt also means that you can easily include your own scripts and styles in separate files as part of your plugin distribution+Начиная с версии ​3.1, у разработчиков плагинов появилась возможность ставить в очередь и загружать скрипты и стили как во фронтенд,​ так и в бэкендМеханизм системы обеспечивает загрузку только одного экземпляра определенного скрипта или стиляКроме того, у разработчика появляется возможность включать свои скрипты и стили как отдельные файлы в состав плагина.
  
-We recommend that if you are including your own scripts and styles that you store them in a seperate folder in your plugin folder, ''/​my_plugin_folder/​js''​ for your javascript files ''/​my_plugin_folder/​css''​ for your stylesheets+Разработчики GetSimple рекомендуют размещать дополнительные скрипты и стили в папке с именем вашего плагина в следующем порядке:​
  
-=== Default Scripts & Styles ===+  * ///​папка_моего_плагина/​js// ​ для javascript - файлов 
 +  * /// папка_моего_плагина /css// – для файлов стилей
  
-GetSimple 3.1 comes preconfigured with the following scripts and styles preconfigured ready for queuing on your pages.  ​ 
  
-**Scripts** +=== Скрипты и стили по умолчанию ===
-  * jquery ​ - CDN version of Jquery  +
-  * jquery-ui - CDN version of JQuery UI +
-  * fancybox - Fancybox lighbox script +
-  * getsimple - GetSimple site Javascript+
  
-**Styles** +GetSimple 3.1 содержит конфигурацию для постановки в очередь на загрузку следующих скриптов и стилей: ​ 
-  * getsimple - Getsimple Site CSS+
  
-**Note:** Jquery, Fancybox & Getsimple are loaded automatically on every page of the Admin back-end. +**Скрипты**  
 +  * jquery – CDN-версия ​Jquery ​ 
 +  * jquery-ui - CDN-версия ​ JQuery UI 
 +  * fancybox – скрипт JQuery-плагина Fancybox  
 +  * getsimple – Javascript ​ для системы ​
  
 +**Стили** ​
 +  * getsimple – CSS- стили Getsimple ​
  
-==== Register & Queue Your Script ====+**На заметку**:​ Jquery, Fancybox и getsimple загружаются автоматически для каждой страницы административного бэкенда.
  
-To use your script you must first register it with the system. ​+ 
 + 
 +==== Регистрация и постановка в очередь для скрипта ==== 
 + 
 +Для применения скрипта его необходимо зарегистрировать в системе:​
  
 <​code>​ <​code>​
 // register_script($handle,​ $src, $ver, $in_footer=FALSE) // register_script($handle,​ $src, $ver, $in_footer=FALSE)
-// $handle ​name for the scriptmust be unique for each script loaded +// $handle ​название скриптадолжно быть уникальным для системы 
-// $src location of the src for loading +// $src путь к файлу скрипта для загрузки 
-// $ver script version +// $ver версия скрипта 
-// $in_footer ​load the script in the footer if true+// $in_footer ​если ​true – загрузить скрипт в футер (подвал) страницы
 register_script('​jquery',​ '​http://​ajax.googleapis.com/​ajax/​libs/​jquery/​1.7.1/​jquery.min.js',​ '​1.7.1',​ FALSE); register_script('​jquery',​ '​http://​ajax.googleapis.com/​ajax/​libs/​jquery/​1.7.1/​jquery.min.js',​ '​1.7.1',​ FALSE);
 </​code>​ </​code>​
  
-The above code registers the CDN version of Jquery but it will not be loaded until queued on the system+Приведенный выше код регистрирует ​CDN-версию JQiery, но его загрузки не произойдет,​ пока он не будет помещен в очередь.
  
-To queue and load a registered script use+Для постановки зарегистрированного скрипта в очередь и его загрузки используйте следующий код:
  
 <​code>​ <​code>​
 // queue_script($name,​$where);  ​ // queue_script($name,​$where);  ​
-// $name name of the script to load +// $name название скрипта для загрузки 
-// $where GSFRONT ​for theme frontend, GSBACK ​for backend Admin, GSBOTH ​to load on both+// $where ​т.е. куда - GSFRONT ​для темы или внешней части сайта, GSBACK ​для раздела администрирования или бэкенда, GSBOTH ​и во фронтенд,​ и в бэкенд
 queue_script('​jquery',​GSBOTH); ​ queue_script('​jquery',​GSBOTH); ​
 </​code>​ </​code>​
  
-The above code will load Jquery on your theme as well as the Admin backend. ​+Приведенный выше код загрузит библиотеку JQuery в вашу тему, а также в административную панель
  
-To register a script from your plugin folder use +Для регистрации скрипта из папки вашего плагина используйте следующий код:
  
 <​code>​ <​code>​
Line 187: Line 224:
 </​code>​ </​code>​
  
-In production if your plugin requires ​Jquery ​to be loaded on the frontend theme just queue it using GSFRONT ​ +В окончательной версии плагина,​ если для фронтенда требуется библиотека //Jquery//, поставьте ее в очередь используя параметр //GSFRONT//. Независимо от того, сколько плагинов требуют эту библиотеку,​ она будет загружена только один раз.
-and it will be loaded once regardless of how many plugins have set it to load+
  
  
-==== Register & Queue Your Styles ​====+==== Регистрация и постановка в очередь стилей ​====
  
-To use your own stylesheets you must first register them with the system+Для использования собственных файлов стиля вы должны зарегистрировать их в системе
  
 <​code>​ <​code>​
-// register_sstyle($handle, $src, $ver) +// register_style($handle, $src, $ver) 
-// $handle ​name for the stylemust be unique for each style loaded +// $handle ​название стилядолжно быть уникальным для системы 
-// $src location of the src for loading +// $src путь к файлу стиля для загрузки 
-// $ver style version +// $ver версия ​ 
-// $media ​Media type for the CSS file+// $media ​тип media – тип носителя или устройства ​
 register_style('​getsimple',​ $SITEURL.$GSADMIN.'/​template/​style.php',​ GSVERSION, '​screen'​);​ register_style('​getsimple',​ $SITEURL.$GSADMIN.'/​template/​style.php',​ GSVERSION, '​screen'​);​
 </​code>​ </​code>​
  
  
-The above code registers the GetSimple ​CSS files but will not be loaded until queued on the system+Приведенный выше код регистрирует ​CSS-стиль,​ но его загрузка не происходит,​ пока он не будет помещен в очередь.
  
-To queue and load a registered style use+Для постановки зарегистрированного стиля в очередь и его загрузки используйте следующий код:
  
 <​code>​ <​code>​
 // queue_style($name,​$where);  ​ // queue_style($name,​$where);  ​
-// $name name of the style to load +// $name название стиля для загрузки 
-// $where GSFRONT ​for theme frontend, GSBACK ​for backend Admin, GSBOTH ​to load on both+// $where ​т.е. куда - GSFRONT ​для темы или внешней части сайта, GSBACK ​для раздела администрирования или бэкенда, GSBOTH ​и во фронтенд,​ и в бэкенд
 queue_style('​getsimple',​GSBOTH); ​ queue_style('​getsimple',​GSBOTH); ​
 </​code>​ </​code>​
  
 +====== Ссылки ======
 +
 +На главную [[ru:​|Содержание]]
 +
 +===== Страницы этой секции =====
  
 +=== Разработка плагинов ===
 +  *[[ru:​plugins:​extend_api|Работа с  Extend API ]]
 +  *[[ru:​plugins:​hooks_filters|Хуки и фильтры]]
 +  *[[ru:​plugins:​tabs_menus|Вкладки и боковые меню]]
 +  *[[ru:​plugins:​tips|Советы и рекомендации]]
 +  *[[ru:​plugins:​update_notifications|Взаимодействие плагинов и секции Extend сайта get-simple.info]]
ru/plugins/creation.1381231572.txt.gz · Last modified: 2013/10/08 11:26 by Arkady