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
Комментарии —
  1. avatar Аркадий 07 февраля 2018, 16:18 #
    Здравствуйте! После переноса сайта на другой домен в клиент конфиге пропадают кнопки «Сохранить конфигурацию» и «Администрирование» и вообще слегка подглючивает). Помогает только полная очистка папки cache, но только на раз, после следующего захода такая же ерунда. Переустановка компонента не помогает. Не подскажете что это может быть и куда копнуть)?
    1. avatar Simkin Andrew 07 февраля 2018, 19:18(был изменён) #
      Может в конфигурации движка где-то осталось старое доменное имя.
      Либо при переустановке не всё удаляется у компонента… удалите компонент, удалите его папку в assets и core, почисть кеш. Убедись что в БД не осталось таблицы компонента и после уже пробуй ставить его заново. Может вообще стили какие-то делают эти кнопки скрытыми, а они на самом деле есть. Может с учетной записью что-то не так, например, прав не хватает на редактирование настроек. Короче, много вариантов может быть)
      1. avatar Аркадий 08 февраля 2018, 13:06 #
        Долго парился) оказалось нужно просто деинсталировать-деинсталировать, без сохранения, а потом установить. В БД все настройки при этом сохраняются.
    © REALADMIN.RU   2018 г.
    Страница сгенерирована: 0,2092 s | 12 mb.
    На каком уровне Вы играете в шахматы?
    О П Р О С
    Home Question Top