У меня на одном из интернет-магазинов галерея фотографий товара сделана с помощью компонента MIGx. Сделано удобно, поддерживается мультизагрузка фотографий, для каждого товара автоматически создается папочка по номеру его ID под фотки.
Выводятся фотографии с помощью сниппета getImageList. Все здорово, работает за исключением тех случаев, когда фотографии к товару не загружены. В таком случае просто ничего не выводится и с этим можно смириться, если верстка страницы при этом не ломается. Либо поправить верстку, чтобы не ломалась. Но мне присра захотелось, чтобы при отсутствии фотографий выдавалась заглушка nofoto.jpg. И сразу скажу, привычных темплейтов для вывода при отсутствии результата выборки сниппета getImageList не предусмотрено. В русскоязычном интернете я тоже не нашел решения. Пришлось обратиться к буржунету.
Там нашлось решение, от разработчика этого компонента Bruno17, основаное на phx (который в REVO идет «из коробки», и всю логику шаблонов удобно делать с помощью него) такое:
1 2 3 4 5 6 7 8 9 10 |
[[!getImageList? &............ &........... &toPlaceholder=`myMigxPh` ]] [[+myMigxPh:isnot=``:then=` <h2>Images</h2> [[+myMigxPh]] `:else=``]] |
Т.е. надо использовать вывод результата работы сниппета getImageList через плейсхолдер, который мы перед выводом проверяем на пустоту.
Вероятно способ рабочий, но у меня не заработало (вернее оно работало, но не правильно, с глюками), вероятно т.к. я вызов этого сниппета делал из под работы getProducts обернутого в pdoPage для пагинации товаров.
Тогда стал искать решение дальше. И нашел его. Оказывается любому сниппету можно через phx добавит значение по умолчанию. В моем случае решение такое:
1 |
[[getImageList:default=`<img src="assets/images/nofoto.jpg" alt=""/>`? &...]] |
Спасибо большое. Решило проблему выводить или нет блок с рейтингом очень просто. Взял на заметку.