Migx очень интересный инструмент по разработке сайтов для MODx. С помощью него я ни раз создавал интересный функционал, самый частый из них это галерея изображений. Ее я использую для создания баннеров на сайте. Ниже вы можете посмотреть пример
Я использую способ быстрого создания MIGX через TV поле. Создадим TV поле banners
Далее переходим во вкладку "Параметры ввода"
Здесь мы должны выбрать тип ввода "MIGX", а такде прописать JSON код для
1. Создания полей самого баннера
2. Отображения preview в админке
Вот код для первого пункта
[{"caption":"Image", "fields": [
{"field":"banner_title","caption":"Название баннера"} ,
{"field":"banner_img","caption":"Картинка","inputTV": "migx_img"},
{"field":"banner_img_mobile","caption":"Картинка мобильник","inputTV": "migx_img"},
{"field":"banner_link","caption":"Ссылка"},
{"field":"published", "caption":"Опубликован", "inputTVtype":"checkbox", "inputOptionValues":"Да==1"}
]
}]
Вот код для второго пункта
[
{
"header": "Идентификатор", "width": "30", "sortable": "true", "dataIndex": "MIGX_id"
},
{
"header": "Название баннера", "width": "360", "sortable": "true", "dataIndex": "banner_title"
},
{
"header": "Картинка", "width": "260", "sortable": "true", "dataIndex": "banner_img","renderer": "this.renderImage"
},
{
"header": "Активность", "width": "260", "sortable": "true", "dataIndex": "published"
}
]
В данном случае есть нюанс и касается он загрузки изображения на сервер. " "inputTV": "migx_img"
" эта запись указывает, что данное поле должно отображаться как TV поле migx_img,
которое мы создали заранее. Оно имеет тип "Смешанная загрузка файла" это дополнение mixedImage
Вы можете указать вместо этого просто " "inputTVtype": "image"
" тогда загрузка будет происходить с сервера
После чего нам нужно указать у какого шаблона будет отображаться данное TV поле, я укажу "Главная страница"
После чего сохраняем и переходим на страницу "Главная страница" в раздел дополнительные поля TV
Для примера тут уже заполнено 4 баннера, давайте попробуем отредактировать какой-то
А теперь давайте встроим вывод баннеров на главной странице сайта. Я использую owl carousel
<div class="banner">
<div class="container">
<div class="banner_slider nonloop">
[ [getImageList?
&tvname=`banners`
&tpl=`@CODE:
<div class="banner_slider_item"><a href="[[+banner_link]]">
<picture>
<source srcset="[[+banner_img_mobile]]" media="(max-width: 780px)">
<img src="[[+banner_img]]" alt="">
</picture>
</a></div>
`
&where=` { "published":"1" } `
] ]
</div>
</div>
</div>
а также выведим js код
/*Слайдер 1*/
$(document).ready(function() {
$('.banner_slider').owlCarousel ( {
loop: true, //Зацикливаем слайдер
//Отступ от элемента справа в 50px
autoplay: true, //Автозапуск слайдера
smartSpeed: 500, //Время движения слайда
autoplayTimeout: 4000, //Время смены слайда
dots: true,
autoplayHoverPause: true,
items: 1
} );
} );