Как проверить getImageList на пустоту, а если точнее, то — как вывести только заполненный MIGX? Ответ на эти вопросы вы узнаете в этой заметке.
Бывает частно такая ситуация — создаем некий блок, в котором выводим элементы. И этот блок окружен парой дивов, имеет отступы, заголовок, да и мало ли чего еще. Но вот незадача — блок может быть пустым! И что же делать простому, но трудолюбивому MODX-программисту, если такой неоднозначный товарищ оказался у нас на сайте. И все бы ничего, если бы это был бы getResourses
. Результат его работы мы смогли бы поместить в плейсхолдер (атрибут toPlaceholder
при вызове сниппета), и затем проверить этот плесхолдер на пустсоту примерно так: [[+myDataResult:isnot=``:then=`<div class="class-myWrappClass">[[+myDataResult]]</div>`]]
. Но если мы используем MIGX
, а выводим с помощью getImageList
, то в таком случае будет проблемы, ибо по неизвестным автору причинам проверка на пустоту не проходит. Плесхолдер не пуст, а проверка говорит, что пуст. Пробовал даже свои сниппеты писать, strlen'ом
пытался проверять — безрезультатно. И итоге, после долгих тягот и лишений вдруг неожиданно нашлось решение. Можно ведь использовать wrapperTpl. Вот вы скажете "Да куда ты раньше смотрел!?". Я отвечу "в оригинальную документацию", в которой не сказано ничего про этот атрибут! Что-ж, в документации по MIGx на русском это недоразумение я исправил. Но как говориться — "Долго заметка пишется, да быстро код копи-паститься!".
Как не выводить пустой getImageList
В общем — создаем чанк, внутри которого будет только один MODX-плесхолдер — [[+output]]
, указываем его во wrapperTpl
:
Пример чанка для wrapperTpl
: <div class="class-myWrappClass">[[+output]]</div>
[[!getImageList? &tvname=`migx_mytv` &tpl=`migx_mytv_tpl` &wrapperTpl=`migx_mytv_wrapper` &docid=`[[*id]]` &limit=`999` ]]
Комментарии (3)
Не писать ответ