================= Добавление инструмента в CMS seo-tools ===========================
**** Важно!! - для создания своего инструмента необходимо хорошо знать ООП в php, и сам php соответственно ))
**** Все идентификаторы строк размещаются в файле ресурсов строк конкретного языка, если используются несколько языков интерфейса проекта!
1) Прежде чем добавить инструмент необходимо определиться с идентификатором будущего инструмента. Идентификатор может состоять из символов a-z и знака подчеркивания. Данный идентификатор также будет использоваться для доступа к инструменту, пример:
http://forwebm.net/tools/идентификатор/
2) После того, как идентификатор придуман - в файле конфигурации инструментов необходимо создать новый блок, параметры нового инструмента:
tools.conf.php
пример:
//новый инструмент
'идентификатор' => array(
'descr' => 'toolbase64encodedecode', //идентификатор ресурсов строк для названия нового инструмента
'keywords'=> '', //идентификатор для ключевых слов
'metadesc'=> '', //идентификатор для мета тэга description
'Ldescr' => '', //'идентификатор_строки' - для указания описания инструмента, доступно во всех инструментах
'tdescr' => '', /* развернутое описание инструмента на странице инструмента, описывает идентификатор
html текста, который будет отображаться на странице инструмента, Если пусто - будет
отображаться стандартное описание инструмента, указанное в файле шаблона инструмента */
'onlyforadmin' => false, //доступен только для админа (например при изменении)
'onlineonly' => false //доступен только для авторизованных пользователей
),
Все данные параметры можно будет в последующем изменять в админке в разделе настроек инструмента.
Если необходимо добавить новые настройки - вы можете самостоятельно определить новые поля. Допустимы следующие типы для настроек, которые могут быть изменены в последующем в админке:
-----------------
string - строка, пример такой настройки:
'myoption' => '', //по умолчанию - пусто
-----------------
boolean - да или нет, пример:
'myoption' => false, //по умолчанию нет (false)
-----------------
int,float - числа, пример:
'myoption' => 0.50, //по умолчанию - 0.50
-----------------
array - список (без вложения, только 1 уровень, определяет список), пример:
'myoption' => array('first', 'second'), //по умолчанию 2 строки
-----------------
Новые параметры будут доступны для изменения в админке, в разделе настроек инструмента только, если к настройке назначен идентификатор описания. Идентификатор для элемента настройки должен выглядеть следующим образом:
toolopt_ + название_настройки
'toolopt_название' => "Идентификатор строки `среднего` описания инструмента (опционально), отображается в списке инструментов.",
например:
'toolopt_myoption' => "Моя новая настройка для инструмента",
----------------
После того, как настройки сформированы, следует создать файл обработчика инструмента, для этого:
в каталоге tools\ каталога ядра необходимо создать файл (кодировка UTF-8 без BOM). Имя файла будет иметь вид:
tool-идентификатор.php
например:
tool-mynewtool.php
В данном файле необходимо создать класс, который будет наследником от 1 из двух классов:
а) если инструмент выполняется через ajax - от w_tools_def_mass_ajax если нет - от w_toolitem_noajax_method
Имя класса должно быть следующим:
w_toolitem_идентификатор
пример:
w_toolitem_mynewtool
Любой наследник как от w_tools_def_mass_ajax, так и от w_toolitem_noajax_method должен содержать один обязательный метод:
function _DoActionThisTool() { }
Данный метод является абстрактным и должен быть описан в любом классе нового инструмента. Данный метод выполняется всегда, как при заходе на страницу инструмента, так и при любых других операциях, где используется обращение к странице инструмента, поэтому разделять выполнение действий в данном методе в зависимости от того, выполняет пользователь операцию или просто заходит на страницу инструмента необходимо Вам при разработке инструмента.
Пример каркаса класса для инструмента с идентификатором: mynewtool, который будет выполняться без ajax
class w_toolitem_mynewtool extends w_toolitem_noajax_method {
protected
$result;
function _DoActionThisTool() {
return true;
}//_DoActionThisTool
}//w_toolitem_mynewtool
Описание класса w_toolitem_noajax_method или w_tools_def_mass_ajax Вы можете посмотреть в файле tools.control.lib.php каталога ядра проекта
Для установки ошибки, например при проверки данных, которые вводит посетитель или любых других ситуациях используется метод $this->SetError('текст ошибки'); - метод возвращает всегда false, поэтому в случае ошибки Вы можете завершать выполнение инструмента в методе _DoActionThisTool возвращая результат метода SetError
пример:
class w_toolitem_mynewtool extends w_toolitem_noajax_method {
protected
$result;
function _DoActionThisTool() {
return $this->SetError('ошибка )');
}//_DoActionThisTool
}//w_toolitem_mynewtool
Для получения настроек инструмента в обоих классах используются методы:
$this->GetToolLimitInfoEx('имя настройки')
метод возвращает === false если настройки нет, иначе значение настройки.
Для классов w_toolitem_noajax_method и w_tools_def_mass_ajax определены общие методы общих настроек, например задержки, оплаты и прочего, подробнее см структуру данных классов.
В примере класса я определил переменную $result - данную переменную стоит определять практически всегда, поскольку для любых наследников указанных выше 2 классов применим метод GetResult(), который используется для отображения данных в шаблоне инструмента.
общее описание из классов наследования:
/** возвращает параметр из массива $this->result
* В качестве пути по массиву указывается ключ с разделителем,
* пример:
* GetResult('item')
* или
* GetResult('item.subitem')
* или
* GetResult('item.subitem.subitem')
* и т.д. В качестве вложения используется точка в имени ключа результата
*/
если значения не существует - вернет === false
После того, как определен класс для нового инструмента - необходимо создать для него шаблон:
В каталоге шаблонов + \tools\ создать файл (utf-8 без bom), который будет иметь имя:
tpl_идентификатор.tpl
пример:
tpl_mynewtool.tpl
В данном инструменте, в шаблоне будет доступна переменная $tool_object - которая является экземпляром класса, который был создан для нового инструмента, через него Вы можете получать данные от класса инструмента.
Описание языка шаблонизатора см в офф. справке -
http://www.smarty.net/docsv2/ru/p.s
Для более подробного изучения примера создания инструмента Вы можете использовать в качестве демонстрации любой из 49 инструментов, имеющихся в данный момент в проекте. (среди данных инструментов например можете посмотреть строение инструмента whois - его интерфейсы минимальны по кол-ву кода и легко могут дать подробную информацию о его использовании).
p.s
После того, как будет добавлен инструмент - раздел настройки инструмента в админке, а также настройка иконок и другие настройки и места применения инструмента активируются автоматически и будут доступны в проекте.