Параметр &where
Всем привет!
Похоже предыдущий вопрос был плохо сформулирован, ответов нет. Попробую проще:
Есть вызов ms2gallery
Ссылка на пример синтаксиса, в котором можно писать чистое SQL условие
Пытаюсь добавить для теста такое условие: &where=`[«File.add = 65»]`
Но при любом содержании перед моим условием появляется 0= и все условия не работают.
0.0006981: Added where condition: File.parent=0, File.active=1, 0=File.add = 65, modResource.id:IN(65)
С синтаксисом, в котором используются фигурные скобки пока не получается поставить такие же условия выборки.
Похоже предыдущий вопрос был плохо сформулирован, ответов нет. Попробую проще:
Есть вызов ms2gallery
[[!ms2gallery?
&tpl=`tpl.tabs_photo`
&limit=`0`
&resources=`[[*parent]]`
&showLog=`1`
]]
Есть SQL запрос, который полностью удовлетворяет моим условиям:SELECT * FROM `ms2_resource_files` WHERE (`add` NOT LIKE '%65%' AND `add` NOT LIKE '') OR `add` IS NULL
Как добавить параметр where, чтобы получить тот же результат?Ссылка на пример синтаксиса, в котором можно писать чистое SQL условие
Пытаюсь добавить для теста такое условие: &where=`[«File.add = 65»]`
Но при любом содержании перед моим условием появляется 0= и все условия не работают.
0.0006981: Added where condition: File.parent=0, File.active=1, 0=File.add = 65, modResource.id:IN(65)
С синтаксисом, в котором используются фигурные скобки пока не получается поставить такие же условия выборки.
Комментарии: 7
Вам надо использовать сниппет pdoResources. В нём возможно выбрать картинки с помощью параметров loadModels и class. И в нём уже параметр where будет работать так как надо (только не забудьте добавить в него поля active, parent, чтобы для каждой картинки выбирать только оригинал и не выбирать неактивные картинки).
Кроме того, заметьте, что условие `add` NOT LIKE '%65%' исключит и записи, у которых будут указаны, например, такие числа: 165, 653, 1065 и пр.
И вообще, так как компонент платный, можете написать в техподдержку на сайте modstore.pro. Думаю, вам помогут составить правильный запрос.
Кроме того, заметьте, что условие `add` NOT LIKE '%65%' исключит и записи, у которых будут указаны, например, такие числа: 165, 653, 1065 и пр.
И вообще, так как компонент платный, можете написать в техподдержку на сайте modstore.pro. Думаю, вам помогут составить правильный запрос.
Благодарю!
Я видел, что &where применяется для ms2Gallery, потому не подумал, что нужно использовать другой сниппет.
Верно, поставили такую задачу, что некоторые изображения не должны выводиться на определенных страницах. Потому в поле «add» идет перечисление страниц, где не должны показываться эти изображения.
Я видел, что &where применяется для ms2Gallery, потому не подумал, что нужно использовать другой сниппет.
Кроме того, заметьте, что условие `add` NOT LIKE '%65%' исключит и записи, у которых будут указаны, например, такие числа: 165, 653, 1065 и пр.
Верно, поставили такую задачу, что некоторые изображения не должны выводиться на определенных страницах. Потому в поле «add» идет перечисление страниц, где не должны показываться эти изображения.
И вообще, так как компонент платный, можете написать в техподдержку на сайте modstore.pro. Думаю, вам помогут составить правильный запрос.Я боюсь, что достал Василия с подобными вопросами :) Было уже около трех обращений насчет этого компонента.
Ну раз компонент действительно куплен официально, попробую помочь.
Вот такой код правильно будет выводить картинки?
И по поводу ID-шников — я имел ввиду, что в ресурсе (65) НЕ будут выведены картинки, у которых в поле add будет указано, например: 165, 653, 1065
Вот такой код правильно будет выводить картинки?
[[pdoResources?
&loadModels=`ms2gallery`
&class=`msResourceFile`
&tpl=`tpl.tabs_photo`
&sortby=`{ "msResourceFile.rank":"ASC" }`
&limit=`0`
&where=`[
{ "active":1, "parent":0, "resource_id":25 },
[
{"add:NOT LIKE":"%65%", "OR:add:IS":null },
{ "add:NOT LIKE":"", "OR:add:IS":null }
]
]`
&showLog=`1`
]]
И по поводу ID-шников — я имел ввиду, что в ресурсе (65) НЕ будут выведены картинки, у которых в поле add будет указано, например: 165, 653, 1065
Ого, этот способ много интереснее моего!
Конечный вариант кода выглядит так:
Конечный вариант кода выглядит так:
[[!pdoResources?
&loadModels=`ms2gallery`
&class=`msResourceFile`
&tpl=`@INLINE:
<a href="/assets/images/resources/[[*parent]]/800x536/[[+file]]" data-fancybox="gallery" class="item fancybox swiper-slide" rel="phototabs" data-caption="[[+name]]">
<img src="/assets/images/resources/[[*parent]]/150x130/[[+file]]" alt="[[+name]]" title="[[+name]]">
</a>`
&sortby=`{ "msResourceFile.rank":"ASC" }`
&limit=`0`
&where=`[
{ "active":1, "parent":0, "resource_id":[[*parent]] }, {"add:NOT LIKE":"%|[[*id]]|%", "OR:add:LIKE":"", "OR:add:IS":null }
]`
&showLog=`1`
]]
Подскажите, пожалуйста, что это за чудный вариант синтаксиса? Где про него можно почитать? Я правильно понял, что второй уровень квадратных скобок это аналог AND (… OR ...)?&where=`[
{ "active":1, "parent":0, "resource_id":25 },
[
{"add:NOT LIKE":"%65%", "OR:add:IS":null },
{ "add:NOT LIKE":"", "OR:add:IS":null }
]
]`
Ну раз компонент действительно куплен официально, попробую помочь.Безусловно, я почти с самого начала проталкиваю покупку платных дополнений при создании сайта.
Это не синтаксис — это обычный JSON. Он преобразуется в коде сниппета в массив и передаётся в xPDO. xPDO объединяет все элементы через AND. Вложенность преобразует в скобки. Если находит префикс OR, объединяет через OR вместо AND.
А на Fenom можно и вовсе сразу массив задавать, без JSON =)
Используя pdoresources смог решить проблему так:
Благодарю за подсказку! Иначе дальше бы мучался с ms2gallery
[[!pdoResources?
&loadModels=`ms2gallery`
&parents=`0`
&resources=`[[*parent]]`
&limit=`0`
&tpl=`@INLINE:
<a href="/assets/images/resources/[[*parent]]/800x536/[[+file]]" data-fancybox="gallery" class="item fancybox swiper-slide" rel="phototabs" data-caption="[[+name]]">
<img src="/assets/images/resources/[[*parent]]/150x130/[[+file]]" alt="[[+name]]" title="[[+name]]">
</a>`
&leftJoin=`{
"File": {
"class":"msResourceFile"
,"alias":"File"
,"on": "File.resource_id = '[[*parent]]' AND File.path = '[[*parent]]/' AND (File.add LIKE '' OR File.add IS NULL OR File.add NOT LIKE '%[[*id]]%')"
}
}`
&select=`{
"File" : "*"
}`
]]
Выглядит очень криво на мой взгляд, но лучше ничего не придумал.Благодарю за подсказку! Иначе дальше бы мучался с ms2gallery
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.