Матрица тегов (вывод по совокупности тегов)
Всем привет!
Возник вопрос — можно ли как-то организовать вывод ресурсов по совпадению нескольких признаков: например есть группа ресурсов — автомобили, и три группы тегов: цвет, брэнд, в лизинг можно или нет.
А далее на определенных страницых делать вывод, например «Показать все черные BMW доступные в лизинг».
Хотелось бы «размечать» ресурсы каким-нибудь симпатичным инструментом возможностью предустановок, навроде Tagger, но не обязательно им.
Заранее спасибо! Если что-то глупое написал, ногами не бейте, я еще только учусь)))
UPD
А вот и решение:
Возник вопрос — можно ли как-то организовать вывод ресурсов по совпадению нескольких признаков: например есть группа ресурсов — автомобили, и три группы тегов: цвет, брэнд, в лизинг можно или нет.
А далее на определенных страницых делать вывод, например «Показать все черные BMW доступные в лизинг».
Хотелось бы «размечать» ресурсы каким-нибудь симпатичным инструментом возможностью предустановок, навроде Tagger, но не обязательно им.
Заранее спасибо! Если что-то глупое написал, ногами не бейте, я еще только учусь)))
UPD
А вот и решение:
[[!pdoResources?
&parents=`родитель ресурсов`
&tpl=`чанк`
&where=`[[!TaggerGetResourcesWhere? &matchAll=`1` &tags=`tag1,tag2`]]`
&limit="сколько штук выводить. 0 - если без все что есть"
]]
В параметре "&tags=``" я писал англоязычные алиасы. Комментарии: 17
Так в Tagger это и реализуется достаточно несложно. Если вы не умеете, то наймите того, кто умеет. Вряд ли вам все по шагам разжуют. Как это реализовать — вы уже сами написали: создать группы с нужными тегами и назначать их ресурсам. Как выводить ресурсы по тегам есть в документации к Tagger.
Gосле фразы " Если вы не умеете, то наймите того, кто умеет" — можно закрывать все форумы вообще))
Мне бы подошел просто пример кода, на основе pdoResourses
В документации есть такой:
Мне бы подошел просто пример кода, на основе pdoResourses
В документации есть такой:
[[!getResources?
&where=`[[!TaggerGetResourcesWhere?
&tags=`Books,Vehicles`
&where=`{"isfolder": 0}`]]`
]]
Вроде бы то, что мне надо, но мне не очень понятна вот эта строка:&where=`{"isfolder": 0}`]]`
Если поясните, буду по-человечески признателен.
Условие для TaggerGetResourcesWhere, который ограничит выборку только теми ресурсами, которые не являются контейнерами для других ресурсов.
Так и надо задавать вопрос, я сделал то-то и то-то, но что-то не получилось. А вы хотите решение готовое. Прочитайте документацию, выложите что уже сделали, а вам посоветуют что нужно поправить.
[[!pdoResources? &where=`[[!TaggerGetResourcesWhere? &id=`1,2`]]`]]
Я сделал вот такое, но что-то ничего не получилось. Даже массив никакой не выводит.Мне по сути нужен банальный кусок кода на базе pdoTools и (скорее всего) Tagger`a, выводящий ресурсы, которым назначены определенные теги.
Уже раз 15 прочитал. Поймите, я начинающий, и многих фундаментальных вещей еще пока банально не понимаю. Мне нужен один лишь маленький кусок кода.
Я понимаю, что да, в идеале конечно надо знать фундаментальные основы, и желательно все, и я не отказываюсь категорически, но для того что бы поклеить у себя в квартире обои совсем не обязательно изучать строительную документацию на весь дом. Такова позиция.
Я понимаю, что да, в идеале конечно надо знать фундаментальные основы, и желательно все, и я не отказываюсь категорически, но для того что бы поклеить у себя в квартире обои совсем не обязательно изучать строительную документацию на весь дом. Такова позиция.
чуть-чуть поучить придется
тут комментарии Василия прочти, что бы не городить бессмысленные конструкции
тут комментарии Василия прочти, что бы не городить бессмысленные конструкции
То есть у getResourse и у pdoResourse запрос &where строится по-разному?
Сделал такой код:
Может что-то лишнее есть, что не обязательно использовать?
[[!pdoPage?
&element = `pdoResources`
&loadModels=`tagger`
&class=`TaggerTagResource`
&leftJoin=`{
"NameTag": {
"class": "TaggerTag",
"on": "TaggerTagResource.tag = NameTag.id"
},
"Posts": {
"class": "modResource",
"on": "TaggerTagResource.resource = Posts.id"
}
}`
&select=`{
"TaggerTagResource": "*",
"NameTag": "NameTag.tag, NameTag.alias",
"Posts": "Posts.id, Posts.pagetitle, Posts.description"
}`
&where=`{
"NameTag.alias": "po-derevu"
}`
&sortby=`TaggerTagResource.resource`
&sortdir=`ASC`
&tplWrapper =`@INLINE <h2 class="h3">Всего результатов: [[+page.total]]</h2>[[+output]]`
&tpl= `device-card`
]]
Вроде работает как надо, но уж больно громоздким кажется.Может что-то лишнее есть, что не обязательно использовать?
[[!pdoResources?
&parents=`родитель ресурсов`
&tpl=`чанк`
&where=`[[!TaggerGetResourcesWhere? &tags=`tag1,tag2`]]`
]]
Работает если только один тег. Если хотя бы два ставишь, то выводит только по второму, а надо что бы выводил только те, у которых они совпадают
Ну серьезно, попробуйте открыть документацию. Там все это есть
Дмитрий, а кто ж спорит, что там это есть?
Я открывал, читал и даже наобум пробовал и id и idx и alias и с кавычками и без, и с пробелами после запятой…
Говорю я, что не работает. Выводит только по последнему тегу, а надо что бы выводило ресурсы, у которых совпадают оба тега…
Я открывал, читал и даже наобум пробовал и id и idx и alias и с кавычками и без, и с пробелами после запятой…
Говорю я, что не работает. Выводит только по последнему тегу, а надо что бы выводило ресурсы, у которых совпадают оба тега…
Если пролистать документацию вниз, к TaggerGetResourcesWhere и найти там параметр
&matchAll int optional If set to 1, resource must have all specified tags.
То будут выводиться ресурсы, которые имеют все указанные теги, а не один из них.[[!pdoResources?
&parents=`родитель ресурсов`
&tpl=`чанк`
&where=`[[!TaggerGetResourcesWhere? &matchAll=`1` &tags=`tag1,tag2`]]`
]]
Спасибо, Дмитрий, вроде работает!
Разобрался и с предыдущим затыком — там оказывается по умолчанию у pdoResources лимит 10 поэтому он просто выводил не всё. Будучи начинающим, я этого не знал, а вот теперь уже наверное и не забуду)
Разобрался и с предыдущим затыком — там оказывается по умолчанию у pdoResources лимит 10 поэтому он просто выводил не всё. Будучи начинающим, я этого не знал, а вот теперь уже наверное и не забуду)
Вполне неплохой код, джоинами выйдет меньше запросов к бд, чем вызывать 2 сниппета.
Если хотите, можно сократить эту строчку:
Если хотите, можно сократить эту строчку:
&element = `pdoResources`
— т.к. дефолтное значение %)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.