RealAdmin.ru

Хранение пользовательских настроек сайта в MODX с помощью ClientConfig

MODX
Категория: Сайтострой
07 Дек 2015 г. в 18:00

При проектировании сайта часто требуется создание клиентских настроек, которые в дальнейшем мог бы самостоятельно редактировать любой менеджер. Это номера телефонов компании, почтовые адреса, слоганы, счетчики и прочее. MODX гибкий движок и позволяет решить эту задачу разными способами, в том числе, созданием дополнительных параметров в системных настройках. Но стоит ли мешать системные настройки с клиентскими? Думаю что нет, ведь есть дополнение «ClientConfig».

Пакет есть в официальном репозитории. После инсталляции в меню «Приложения» появится пункт «Конфигурация». В правом верхнем углу будет кнопка «Администрирование», переход по которой позволит создавать группы и сами настройки.

ClientConfig в modx

Группы позволяют объединять настройки по какому-то признаку. Добавление самих настроек происходит с помощью интуитивно понятного интерфейса. Очень полезна возможность выбора типа поля:

  • Текст.
  • Текстовая область.
  • Image.
  • Число.
  • Выбор цвета.
  • Чекбокс.
  • Дата.
  • Время.
  • Выпадающий список.

клиенсткие настройки modx

Вызываются значения по ключу как системные плейсхолдеры.

[[++phone1]]

Работа с ClientConfig в сниппетах

С клиенсткими настройками можно работать и программно, из сниппетов. Получить значение по ключу так же просто, если бы это была системная настройка.

$phone1 = $modx->getOption('phone1','');

Изменить существующее значение ключа тоже не сложно. Для этого достаточно обратиться к процессору «save» компонента «ClientConfig» и передать в JSON строке ключи и их новые значения. Работать будет только в MODX Revolution начиная с версии 2.2.

$otherProps = array(
   'processors_path' => $modx->getOption('core_path') . 'components/clientconfig/processors/'
);

$_POST = array(
   'values' => '{"phone1":"99-99-99","phone2":"55-55-55"}'
);

$response = $modx->runProcessor('mgr/settings/save', $_POST, $otherProps);

if (!$response->isError()) return 'clientconfig save'; 
else return = implode($modx->error->failure($response->getMessage()));

При работе с «ClientConfig» из PHP скриптов стоит помнить, что в системные плейсхолдеры значения подставляются только при возникновении события «onHandleRequest». Поэтому, если из скрипта не выходит получить значение, попробуйте вызывать его программно.

$modx->invokeEvent('OnHandleRequest');
Теги:
Посмотрите похожее — 6
Комментарии — 0
    © REALADMIN.RU   2016 г.
    Страница сгенерирована: 0,2194 s | 10 mb.
    На каком уровне Вы играете в шахматы?
    О П Р О С
    Home Question Top