Страница с настройками для Modx

Раньше я активно использовал компонент ClientConfig. Он удобный, но есть недостаток, который сыграл решающую роль, чтобы от него отказаться — часто в настройках мне нужно использовать Migx. Например, это общий для всех страниц слайдер, или общие рекомендованные товары, или отзывы, под которые не нужно создавать отдельной страницы.

Сейчас я использую для настроек отдельную страницу с отдельным шаблоном. В меню добавляю ссылку на редактирование. Выглядит это так:



На самой странице остаются только TV-параметры, которые и заполняются. Все остальные поля отключаются.



и так



Как это сделать?


1. Создаем и настраиваем отдельный шаблон
Я обычно называю его «99. Настройки» в соответствии с моим наименованием шаблонов для modx
Далее нам нужно отключить все поля документа, а оставить только TV параметры. Для этого переходим в Настройки форм



Создаем новый профиль. Я называю «custom»



Далее КПК (Клик правой кнопкой) на нем. Редактировать.



Добавляем новый набор правил. Выбираем Создание и обновление документа и выбираем шаблон с Настройками.



КПК -> Редактировать. Переходим на вкладку Области и снимает галочки согласно изображению



И сохраняемся. Это мы настроили отображение шаблона.

3. Присваивает шаблон с настройками ресурсу

Выбираем ресурс, в котором будут хранится настройки и присваиваем ему шаблон Настройки.
В данном случае у меня это документ с id 12. После назначения ему данного шаблона, он примет такой вид:



Остается только присвоить ТВ параметры этому шаблону. Каждый TV — это отдельная настройка. Ниже расскажу как получить к ней доступ.

2. Выводим в верхнем меню админки
Переходим в раздел Меню


Добавить пункт


И заполняем следующим образом:


Родитель:
Верхнее меню
Ключ словаря:
mySett
Действие:
resource/update
Параметры:
&id=12
— здесь указываем id вашего ресурса с настройками
Пространство имён:
core
Значок:
<i class="icon-cogs icon icon-large"></i> Настройки

Сохраняем

4. Для получения данных из полей настроек.

Допустим мы завели TV параметр «phone», а ресурс с настроками имеет id 12, тогда чтобы вывести эти данные в шаблоне достаточно вызвать конструкцию:
{12 | resource : 'phone'}

Если у вас TV поле типа Migx и поле имеет имя «documents», то вывести можно следующим образом
{set $documents = '12' | resource : 'documents'}
{foreach $documents | fromJSON as $item}
  {$item.img} ...
{/foreach}

Можно пойти дальше и написать свой модификатор, который позволит еще проще получать настройки, например, так
{'phone' | settings}
{'documents' | settings}

Добавляем сниппет с именем «settings» и содержимым
<?php
$res = $modx->getObject('modResource', 12);
return $res->getTVValue($input);

2 комментария

kap707
Продолжение следует?
Или я какой-то кнопки не вижу?
admin
Дописал инструкцию. Надеюсь понятная