modx getresources tvfilters checkbox
Как можно сделать выборку по tv, если там массив значений, разделенный ||?
Вариант &tvFilters=`subcategory==%||[*id]||%` у меня не работает.
Есть ли выход из данной ситуации?
Вариант &tvFilters=`subcategory==%||[*id]||%` у меня не работает.
Есть ли выход из данной ситуации?
Комментарии: 8
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Решение:
Вместо getresources я использовал pdoResources, но это сути не меняет.
Главное тут:
Т.е. у нас нужный ID может быть в начале строки, тогда subcategory==[[*id]]||%, либо в середине subcategory==%||[[*id]]||% и последнее в конце subcategory==%||[[*id]]||%
Чтобы заменить параметр ИЛИ (||) на другой воспользовался tvFiltersOrDelimiter
А что у Вас не работает-то? Если Вы используете || в качестве обёртки, то это должно фунциклировать:
Только вызов у Вас какой-то странный. Сделайте так:
У одного товара это ||63||, у другого может быть ||636||,||363|| (если параметр множественный и соответствующим образом настроен), у третьего ||6363|| и тут нет никаких пересечений — это разные строки.
Если прописывать в tvFilters %||[[*id]]||%, то все нормально будет выводиться.
На странице с ID=636 мы же ищем товар, у которого в TV есть именно такая подстрока: ||636||. С какой стати нам выведется товар с ||63||?
Другое дело, что может быть путаница из-за этого || — потому я всегда использую #.
Т.е. разделитель в конце и в начале строки не пишется, вот я о чем. А условие subcategory==%||[[*id]]||% работает только для тех значений, которые в серидине строки, но не первые и не последние. тут либо мой вариант, либо tvFilters подставлять сниппет, который слегка модифицирует строку.
Сделайте, чтобы в базе было так: #63#||#66#||#636# и все будет гораздо проще ))