Вступление

Директория для файлов настроек модулей - /admin/modules.
Директория для конкретного модуля - /admin/modules/module_name, например /admin/modules/mod_actions. mod_actions - это значение поля content в таблице cms_modules.
Файл настройки модуля может быть как простой - при помощи описания xml, так и обычный php файл.
Для xml настроек модуля файл должен называться backend.xml, например полный путь к файлу: /admin/modules/mod_actions/backend.xml.
Для индивидуальных настроек модуля, которые невозможно описать при помощи xml и класса /core/classes/formgen.class.php можно сформировать настройки, создав файл /admin/modules/mod_actions/backend.php.

Рассмотрим синтаксис файла /admin/modules/module_name/backend.xml

Стандартная разметка, без учета языковых файлов, на примере модуля mod_blogs

<?xml version="1.0" encoding="utf-8"?>
<backend>
    <module>
        <id>mod_blogs</id>
    </module>
    <params>
        <param type="list" name="sort" title="Сортировка вывода">
            <option title="Лучшие по рейтингу" value="rating" />
            <option title="Самые комментируемые" value="comments_count" />
	    <option title="Последние добавленные" value="pubdate" />
        </param>
 
        <param type="list" name="owner" title="Какие блоги показывать">
            <option title="Блоги пользователей" value="user" />
            <option title="Блоги клубов" value="club" />
        </param>
 
        <param type="list_db" name="blog_id" title="Посты из блога" src="cms_blogs" src_title="title" src_value="id" >
	    <option title="Все блоги" value="0" />
	</param>
 
        <param type="number" name="shownum" title="Количество новых записей" units="шт." default="5" />
 
        <param type="number" name="minrate" title="Ограничение по рейтингу" default="5" hint="Показывать записи с рейтингом выше указанного" />
 
        <param type="flag" name="showrss" title="Показывать ссылку на RSS" default="on" />
 
    </params>
</backend>

В элементе module→id должно быть указано имя модуля, так, как названа директория с ним и значение поля content в таблице cms_modules.
В элементе params формируется параметры настройки модуля.
Каждый элемент param имеет свой тип (type) и в соответствии с ним атрибуты. Типы могут быть:

  • number - числовое поле input, для указания кол-ва чего-либо;
  • string - текстовое поле input;
  • flag - checkbox;
  • list - список предустановленных опций;
  • list_function - список опций, сформированных из результата выполнения функции;
  • list_db - список опций, сформированных запросом к базе данных.

Значения атрибутов интуитивно понятны, но стоит подчеркнуть атрибут name - это название элемента html формы, с таким наименованием будут приходить переменные в $_REQUEST.
Теперь рассмотрим ту же разметку, но с учетом языковых фраз (начиная с версии InstantCMS 1.10.3)

<?xml version="1.0" encoding="utf-8"?>
<backend>
    <module>
        <id>mod_blogs</id>
    </module>
    <params>
        <param type="list" name="sort">
            <option value="rating" />
            <option value="comments_count" />
	    <option value="pubdate" />
        </param>
 
        <param type="list" name="owner">
            <option value="user" />
            <option value="club" />
        </param>
 
        <param type="list_db" name="blog_id" src="cms_blogs" src_title="title" src_value="id" >
	    <option value="0" />
	</param>
 
        <param type="number" name="shownum" default="5" />
 
        <param type="number" name="minrate" default="5" />
 
        <param type="flag" name="showrss" default="on" />
 
    </params>
</backend>

Как вы заметили, убраны атрибуты элементов - title, units, hint.
Для поддержки мультиязычности в данном случае необходимо:

  1. Создать файл языковых фраз, например /languages/ru/admin/modules/mod_blogs.php
  2. Заполнить его, определяя элементы языкового массива

Принцип формирования ключей массива

Учитывая наш пример, приведем сразу готовый листинг языкового файла

<?php
 
if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
 
$_LANG['MOD_SORT']                    = 'Сортировка вывода';
$_LANG['MOD_SORT_OPT_RATING']         = 'Лучшие по рейтингу';
$_LANG['MOD_SORT_OPT_COMMENTS_COUNT'] = 'Самые комментируемые';
$_LANG['MOD_SORT_OPT_PUBDATE']        = 'Последние добавленные';
 
$_LANG['MOD_OWNER']                   = 'Какие блоги показывать';
$_LANG['MOD_OWNER_OPT_USER']          = 'Блоги пользователей';
$_LANG['MOD_OWNER_OPT_CLUB']          = 'Блоги клубов';
 
$_LANG['MOD_BLOG_ID']                 = 'Посты из блога';
$_LANG['MOD_BLOG_ID_OPT_0']           = 'Все блоги';
 
$_LANG['MOD_SHOWNUM']                 = 'Количество новых записей';
$_LANG['MOD_SHOWNUM_UNITS']           = 'шт.';
 
$_LANG['MOD_MINRATE']                 = 'Ограничение по рейтингу';
$_LANG['MOD_MINRATE_HINT']            = 'Показывать записи с рейтингом выше указанного';
 
$_LANG['MOD_SHOWRSS']                 = 'Показывать ссылку на RSS';
 
?>

Итак, ключи массива формируются следующим образом:

  • для заголовков (атрибут title элемента param) - MOD_ЗНАЧЕНИЕ_АТРИБУТА_NAME
  • для описания (атрибут hint элемента param) - MOD_ЗНАЧЕНИЕ_АТРИБУТА_NAME_HINT
  • для указания количества (атрибут units элемента param) - MOD_ЗНАЧЕНИЕ_АТРИБУТА_NAME_UNITS
  • для указания заголовков выпадающего списка (вложенный элемент option элемента param) - MOD_ЗНАЧЕНИЕ_АТРИБУТА_NAME_OPT_ЗНАЧЕНИЕ_АТРИБУТА_VALUE

fuze 2013/08/22 01:38

 
разработка/модули/админка_для_модуля.txt · Последние изменения: 2013/08/22 01:40 От fuze