Skip to content

Модуль настроек сайта. realweb.api.config

Совместимость

realweb.api v.5, v.6

Описание

Модуль позволяет хранить разнообразные настройки сайта в едином стиле без необходимости заниматься внедрением "внешнего" вида настроек.

Такими настройками могут быть api ключи к разнообразным сервисам (Google Captcha), общие настройки (Например "Не выводить цену на карточки товара" - влияет на весь каталог) и т.п.

Поддерживаемые типы настроек:

  • Строка (string)
  • Целое число (integer)
  • Число с плавающей запятой (float)
  • Строка в несколько строк (textarea)
  • Да/нет (checkbox)
  • Список выбора (select)
  • Файл (file)
  • Справка (инструкция) (html)

Модуль поддерживает группировку настроек по группам - настройки будут группироваться по вкладкам

Также модуль поддерживает подключение своего шаблона для кастомизации интерфейса редактирования

Редактирование настроек находится на странице редактирования модуля

Пример интерфейса

Пример интерфейса

Возможные доработки

  • Доступ к разным настройкам по группам пользователей

Практическое использование

Настройки добавляются "на лету" на событии onConfigBuild модуля realweb.api.config

Первый аргумент - название переменой настройки

Второй - Название настройки для администратора

Настройки без групп

php
use Realweb\Api\Module\Config;

EventManager::getInstance()->addEventHandler('realweb.api.config', 'onConfigBuild', array('\Realweb\Api\Module\Config\Model\Options', 'onConfigBuild'));

class Options
{
    public static function onConfigBuild()
    {

       Config\Model\Helper::getInstance()
            ->addStringItem('param1','Параметр 1')
            ->addIntegerItem('param2','Параметр 2')
            ->addFloatItem("param3",'Параметр 3'
            ->addTextareaItem("param4",'Параметр 4')
            ->addCheckboxItem("param5",'Параметр 5')
            ->addFileItem("param6",'Параметр 6')
            ->addSelectItem("param7",'Параметр 7')
            ->getConfigByName('param7') //Сразу можно его добыть
            ->addOption('option1','Option 1') // И поставить опции
            ->addOption('option2','Option 2')
            ->addOption('option3','Option 3');

    }

}

Настройки с группой

php
use Realweb\Api\Module\Config;

EventManager::getInstance()->addEventHandler('realweb.api.config', 'onConfigBuild', array('\Realweb\Api\Module\Config\Model\Options', 'onConfigBuild'));

class Options
{
    public static function onConfigBuild()
    {

       Config\Model\Helper::getInstance()
              ->addGroup('service','Сервисы')
              ->getGroupByName('service') //сразу находим группу
              ->addIntegerItem("test","int") //Добавление в группу
              ->addFloatItem("test10","Число")
              ->addStringItem("test4","string")
              ->addTextareaItem("test5",'Test Textarea')
              ->addCheckboxItem("test7",'Test checkbox')
              ->addFileItem("test9",'Test file')
              ->addSelectItem("test8",'Test Select')
              ->getConfigByName('test8')
              ->addOption('option1','Option 1')
              ->addOption('option2','Option 2')
              ->addOption('option3','Option 3');

    }

}

Подключение своего шаблона

php
EventManager::getInstance()->addEventHandler("realweb.api.config", "onBeforeTemplateLoad", array('\Realweb\Api\Module\Config\Model\Options', 'load'), false, 10);
class Options
{
    public static function load(\Realweb\Api\Model\Utils\Url &$obUrl)
    {
        $obUrl->setPath('/__admin/config/');
    }

}

Получение настроек

php
use Realweb\Api\Module\Config;

$strParam1 = Config\Model\Data::getInstance()->getValue('param1','default value');

Репозиторий

Репозиторий модуля