Модули: Install
Начиная с версии Fapos 1.5, обладает упрощенным механизмом инсталяции модулей(добавлением). Рассмотрим на примерах...
Допустим, вы написали модуль "test". В каталоге с модулями он будет выглядеть так /modules/test/index.php. Дело в том, что этот модуль будет считаться не установленным, пока в конфиге не появятся его настройки. По сути это может быть вообще пустой массив. Хотя такой ключ как active обязательный. Именно он определяет включен ли модуль. Заметьте, не установлен, а именно включен, это разные вещи. Так вот, не установленные модули автоматически появляются в боковом меню админки и имеют только один пункт меню - install. Кликнув по этому пункту будет произведена установка модуля.
Что необходимо для установки модуля
Кроме описания настроек(файл info.php), есть ряд файлов, предназначенных именно для установки:
install_db.php - запросы к базе в виде массива
install_groups_rules.php - права групп для импорта в общий конфиг системы
install_settings.php - настройки для импорта
template_parts.php - какие части шаблона будут доступны в админке
install_modules_access.php - перечень доступных для модуля возможностей. Тут немного не понятно может быть. Пояню: по умолчанию для редактирования категорий и доп. полей открыты только news, stat, loads и foto. Но если вы хотите, что бы вашь модуль тоже имел доступ для редактирования этих сущностей, кроме создания необходимых таблиц, нужно так же добавить этот модуль в список разрешенных. Ниже я покажу пример как это сделать.
Подробнее и с примерами
install_db.php
<?php
$FpsInstallQueries = array();
$FpsInstallQueries[] = "CREATE TABLE `" . $Register['DB']->getFullTableName('test') . "`";
$FpsInstallQueries[] = "CREATE TABLE `" . $Register['DB']->getFullTableName('test') . "`";
$FpsInstallQueries[] = "CREATE TABLE `" . $Register['DB']->getFullTableName('test') . "`";
?>
Тут, я думаю, все предельно ясно. Обычные запросы. По крайней мере, до версии 1.5 так и будет. А в более поздних версиях, возможно будет ОРМ и все станет еще проще.
install_groups_rules.php
<?php
$FpsInstallRules = array(
'view_list' => array('1', '2'),
'add_material' => array('1', '2'),
);
?>
Предположим мы сделали такой файл с таким же содержанием как в примере. И допустим, что наш модуль называется
mymod. Наш текущий файл с правами групп выглядит(утрированно) так:
<?php
$acl_rules = array (
'news' =>
array (
// blabla...
),
);
?>
Тогда, после инсталяции мы получим следующее:
<?php
$acl_rules = array (
'news' => array(
// blabla...
),
'mymod' => array(
'view_list' => array(
'1', // Теперь юзера со статусом 1 могут смотреть список материалов
'2' // И со статусом 2 тоже
),
'add_material' => array(
'1', // Теперь юзера со статусом 1 могут добавлять материалы
'2' // И со статусом 2 тоже
),
),
);
?>
install_settings.php
<?php
$FpsInstallSettings = array(
'active' => 1,
'per_page' => 10,
'announce' => 1000,
);
?>
Ну тут все почтитоже самое, что и в
install_groups_rules.php, но есть парочка ньюансов. Во-первых, обязательная настройка
active, равная единице(1). Это говорит о том, что модуль активен. Иначе он будет считаться отключенным. Ну переносится все в файл /sys/settings/
config.php. Утрированный пример:
До
<?php
$set = array(
'news' => array(
'active' => 1,
'per_page' => 10,
'announce' => 1000,
),
// ...
);
?>
После
<?php
$set = array(
'news' => array(
'active' => 1,
'per_page' => 10,
'announce' => 1000,
),
'mymod' => array(
'active' => 1,
'per_page' => 10,
'announce' => 1000,
),
);
?>
template_parts.php
<?php
$allowedTemplateParts = array(
'addform',
'main',
'editform',
'viewmat',
'tablemat',
);
?>
А это список файлов, доступных для редактирования через админку. Расширение указывать, как видите, не надо.
install_modules_access.php
<?php
$FpsInstallAllowModules = array(
'addFields' => array(
'yourmodule',
),
'addFieldsTitles' => array(
'yourmodule' => 'Мой модуль',
),
'categories' => array(
'yourmodule',
),
);
?>
Обратите внимание, настройка active в конфиге модуля отвечает за егог статус(активен/выключен). По этому, что бы ваш модуль работал, а не считался отключенным после инсталяции, обязательно делайте эту настройку равной единице("1").
Итоги:
Обратите внимание, имена файлов и переменных должны быть именно такими.