Примеры использования MIGX в MODX

Документация MIGX на русском

Стандартные плесхолдеры в MIGX

  • [[+ИмяПоля]] Все поля, которые вы создали во «вкладки формы»
  • [[+idx]] Номер элмемента (начинается с 1)
  • [[+_first]] Если элемент первый, в этом плесхолреде будет единица
    Пример использования: [[+_first:isnot=``:then=`это первая строка`:else=`это не первая строка`]]
  • [[+_last]] Если элемент последний, в этом плесхолреде будет единица
  • [[+_alt]] В этом плесхолреде будет единица у каждого второго элемента
  • [[+total]] Общее кол-во элементов, можно заменить название плейсхолдера в настроке totalVar
  • [[+property.name]] Можно вызвать любую настройку вывода сниппета. К примеру, если вы указали &tpl=`why_choose_us_tpl`, то вызвав [[+property.tpl]] вы получите why_choose_us_tpl

Слайдер MIGX — Пример вызова с картинкой из специального источника файлов.

1. Специальный источник файлов

Специальный источник файлов делаем для того чтобы убереч пользователя и себя от случайного удаления критично важный файлов. Не редки случаи, когда неопытне пользователи могут нечайно или по незнанию удалить «ненужные» файлы вроде config.core.php из файлового менеджера. Для того чтобы этого не случалось лучше всего выделить для загрузки картинок отдельную папку и дать доступ только к ней. Речь не идет о полной защите файловой системы. Это лишь защита «от дурака» при загрузки изображений через TV.

Создать источник файлов крайне просто:

  1. Зайдите Медиа / Источники файлов / Создать новый источник файлов;
  2. Введите имя и укажите «Тип источника файлов» Файловая система;
  3. Создайте папку, которую вы бы хотели отдать на расрехание пользователю, к примеру userimg;
  4. Отредактируйте новый источник файлов, укажите basePath и baseUrl/userimg/;
  5. Можно еще отредактировать allowedFileTypes, указав там jpg,jpeg,png, чтобы можно было загрузить только эти типы файлов.

2. Создаем TV MIGX

  1. Название — migx_slider
  2. Тип ввода — migx
  3. Источник файлов (опционально) — userimg
Вкладки формы
[{
"caption": "Слайдер на главной",
"fields": [
{"field": "sliderimg","caption": "Изображение","inputTVtype": "image","sourceFrom":"migx"},
{"field": "slidertitle","caption": "Заголовок"},
{"field": "slidertitlelink","caption": "Ссылка","inputTVtype": "text"}]
}]
Разметка колонок
[{"header": "Изображение","dataIndex": "sliderimg","renderer": "this.renderImage"},
{"header": "Заголовок","dataIndex": "slidertitle"}]

Стиппет вывода (снипппет идет в комплекте пакета MIGX)

[[!getImageList?
    &tvname=`migx_slider`
    &tpl=`migx_slider_tpl`
]]

Чанк шаблона migx_slider со слайдером и примеров использования стандартных плесхолдеров в условиях

[[+_first:isnot=``:then=`
    <link href="//cdnjs.cloudflare.com/ajax/libs/bxslider/4.2.5/jquery.bxslider.min.css" rel="stylesheet">
    <script src="//cdnjs.cloudflare.com/ajax/libs/bxslider/4.2.5/jquery.bxslider.min.js"></script>
    <ul class="bxSlider_wr">
`]]
<li><img src="[[+sliderimg]]" alt="Слайд номер [[+idx]]"></li>
[[+_last:isnot=``:then=`
    </ul>
    <script>$(".bxSlider_wr").bxSlider();</script>
`]]

Пример вызова с сортировкой и лимитом

В данном примере у нас есть таблица с двумя колонками — кол-вом человек (personnumber) и ценой (rubprice). Задача — вывести в чанк, используемый в getResources строку типа От 500 руб при группе в 12 человек.

[[!getImageList?
&tvname=`pricetable`
&tpl=`@CODE:<span>От <em>[[+rubprice]]</em> руб при группе в <em>[[+personnumber]]</em> человек</span>`
&limit=`1`
&sort=`[{"sortby":"rubprice","sortdir":"ASC","sortmode":"numeric"}]` [[-можно передать несколько массивов]]
&docid=`[[+id]]`]]
  • tvname — Имя TV-параметра
  • tpl — Шаблон вывода можено указать так
  • limit — Выводим только один элемент
  • sort — Сортируем по rubprice, порядок сортировки ASC(ASC - по возростанию, DESC - по убыванию), "sortmode":"numeric" означает, что значение поля будет восприниматься как число, и в соотвествии с этим сортироваться. (возможные значения (вероятно те же, что и у getResources) — string, integer, decimal, datetime)
  • docid — Так как этот сниппет используется в выводе getResources, то нужно указать id ресурса, все как всегда.

Пример условия where

[[!getImageList?
&tvname=`pricetable`
&where=`{"personnumber:=":12}`
]]

Вариант реализации MIGX (выпадающий список из системной настройки)

Задача — получить форму, со списоком (селектом). Значения должны быть редактируемы.

Для решения этой задачи создаем системную настройку, называем ее room_types_hotel. Значение настройки для начала пусть будет Одноместный||Двухместный||Семейный.

Можно использовать биндинги типа @SELECT, @EVAL, @CHUNK как в обычных TV.

В настройках TV MIGX во "Вкладки формы":

[{
"caption": "Тариф",
"fields": [
{"field": "tarifname","caption": "Название","inputTVtype": "listbox","inputOptionValues": "@EVAL return $modx->getOption('room_types_hotel');"},
{"field": "tarifmetr","caption": "Площадь (кв.м.)"},
{"field": "tarifdatefrom","caption": "Дата ОТ","inputTVtype": "date"},
{"field": "tarifdateto","caption": "Дата ДО","inputTVtype": "date"},
{"field": "tarifprice","caption": "Цена"}]
}]

В "Разметку колонок":

[
{"header": "Название","dataIndex": "tarifname"},
{"header": "Площадь","dataIndex": "tarifmetr"},
{"header": "Дата ОТ","dataIndex": "tarifdatefrom"},
{"header": "Дата ДО","dataIndex": "tarifdateto"},
{"header": "Цена","dataIndex": "tarifprice"}
]

Комментарии (0)

  1. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

Похожие статьи

Наш сайт использует куки, нажмите «ОК» если вы не против
OK