Сегодня я научу вас как с помощью MIGX сделать панель управления виджетами.
Предположим, у нас есть такой блок на сайте:
Давайте сделаем панель управления этим блоком, чтобы администратор сайта мог менять части виджета местами, редактировать текст, заменить картинку.
Подготовка
Для начала создадим ТВ-параметры для каждого редактируемого поля: adv.img, adv.title, adv.description. ТВ-шкам задаем нужный нам тип (изображение, текст, текстовая область...). Эти ТВ не должны быть доступны ни для какого шаблона. Они нужны только для того, чтобы создать окно редактирования виджета.Теперь устанавливаем MIGX и приступаем к созданию интерфейса. Создаем еще один ТВ-параметр (adv) с типом migx:
Вкладки формы:
[ {"caption":"Преимущество", "fields": [ {"field":"title","caption":"Заголовок","inputTV":"adv.title"}, {"field":"img","caption":"Картинка","inputTV":"adv.img"}, {"field":"description","caption":"Подпись","inputTV":"adv.description"} ]} ]
Разметка колонок
[ {"header": "Заголовок", "width": "260", "dataIndex": "title"}, {"header": "Описание", "width": "400", "dataIndex": "description"}, {"header": "Картинка", "width": "120", "dataIndex": "img", "renderer": "this.renderImage"} ]
Активируем интерфейс
Теперь создаем новый технический шаблон и техническую страницу в дереве — Виджеты (которой присваиваем этот шаблон). Наш MIGX-ТВ делаем доступным для этого шаблона.Теперь уберем для этого ресурса все вкладки кроме «Дополнительных полей» через настройку форм
А сам ресурс скрываем из дерева через базу данных (в таблице modx_site_content ставим нолик в поле show_in_tree). Только запомните id этого ресурса. Он нам понадобится, чтобы вывести ссылку на него в верхнем меню.
Выводим ссылку на ресурс в верхнем меню
Открываем →Действия, раскрываем пункт Top nav и нажимаем на «Приложения». После этого нажимаем кнопку «Добавить пункт»:- Родитель — components
- Ключ словаря — Виджеты
- Действие — resource/update
- Параметры — &id={id вашего ресурса}
В итоге в верхнем меню (в «Приложениях») появится пункт «Виджеты», который будет открывать наш ресурс.
А выводить виджеты на страницу поможет сниппет getImageList, который идет в комплекте с MIGX:
[[getImageList? &docid=`173` &tvname=`adv` &tpl=`tpl.adv` ]]
Элементы в такой таблице можно сортировать перетаскиванием — сниппет выведет их в нужной последовательности. Если все блоки сайта собрать на такой странице (разбив на категории) получится целый центр управления дизайном. Единственный минус — надо не забывать после изменений нажимать на кнопку «Сохранить».
у migx есть такое
{«field»:«title»,«caption»:«name»}
Пример как я делал:)
Спасибо за мануал))
Возникла следующая проблема, все работало отлично, а сегодня обнаружил, что при сохранении изменения в содержимом виджета при нажатии на кнопку сохранить пишет доступ запрещен, хотя я ничего не менял и еще начала выводится вот такая беда [2015-09-21 13:02:44] (ERROR @ /index.php) modTemplateVar: Attempt to set NOT NULL field type to NULL, после удаления одного из TV во вкладке формы
Нужно для вывода подсказок в магазине, просто хочется в одном месте все сделать и выводить в виде всплывающих подсказок для наименования и значений характеристик.
получается на странице товара штук 20 будет размещено и выводить с помощью getImageList слишком накладно.
Как можно вывести только ячейку «сертификат» или любую другую
Вряд ли выведешь…
А на главной блоки у меня выведены вручную — просто чанки с HTML-кодом.
Спасибо!