modx getresources tvfilters checkbox
        Как можно сделать выборку по tv, если там массив значений, разделенный ||?
Вариант &tvFilters=`subcategory==%||[*id]||%` у меня не работает.
Есть ли выход из данной ситуации?
    
    
                                                                                
            Вариант &tvFilters=`subcategory==%||[*id]||%` у меня не работает.
Есть ли выход из данной ситуации?
Комментарии: 8
                А так?
                    &tvFilters=`subcategory==%[[*id]]%`            
                Павел, не совсем верно. К примеру если есть ID = 68 и оно удовлетворяет вашему примеру, а есть ID= 686, и оно удовлетвореяет вашему примеру, но по сути ошибочно
Решение:
Главное тут:
Чтобы заменить параметр ИЛИ (||) на другой воспользовался tvFiltersOrDelimiter
                    Решение:
[[!pdoResources?
        &element=`getResources`
        &elementClass=`modSnippet`
        &parents=`53`
        &includeTVs=`image,price,price-wsale,subcategory`
        &processTVs=`1`
        &tpl=`product-item`
        &where=`{"template":4}`
        &tvFilters=`subcategory==[[*id]]||%:subcategory==%||[[*id]]:subcategory==%||[[*id]]||%`
        &tvFiltersOrDelimiter=`:`
        
    ]]Вместо getresources я использовал pdoResources, но это сути не меняет. Главное тут:
&tvFilters=`subcategory==[[*id]]||%:subcategory==%||[[*id]]:subcategory==%||[[*id]]||%`Т.е. у нас нужный ID может быть в начале строки, тогда subcategory==[[*id]]||%, либо в середине subcategory==%||[[*id]]||% и последнее в конце subcategory==%||[[*id]]||%Чтобы заменить параметр ИЛИ (||) на другой воспользовался tvFiltersOrDelimiter
                Это понятно. Я сам обычно использую ## или ::
А что у Вас не работает-то? Если Вы используете || в качестве обёртки, то это должно фунциклировать:
Только вызов у Вас какой-то странный. Сделайте так:
                    А что у Вас не работает-то? Если Вы используете || в качестве обёртки, то это должно фунциклировать:
&tvFilters=`subcategory==%||[[*id]]||%` Только вызов у Вас какой-то странный. Сделайте так:
[[pdoResources?
        &parents=`53`
        &includeTVs=`image,price,price-wsale,subcategory`
        &tpl=`product-item`
        &templates=`4`
        &tvFilters=`subcategory==%||[[*id]]||%`
        &tvFiltersOrDelimiter=`:`
]]            
                Да просто ранее pdoPage стоял. Я его обратно верну, поэтому все нормально)            
                    
                И ваш вариант &tvFilters=`subcategory==%||[[*id]]||%` работать е будет, я выше написал почему            
                    
                Если у Вас в TV subcategory у товара в базу пишется ||***||, то будет.
У одного товара это ||63||, у другого может быть ||636||,||363|| (если параметр множественный и соответствующим образом настроен), у третьего ||6363|| и тут нет никаких пересечений — это разные строки.
Если прописывать в tvFilters %||[[*id]]||%, то все нормально будет выводиться.
На странице с ID=636 мы же ищем товар, у которого в TV есть именно такая подстрока: ||636||. С какой стати нам выведется товар с ||63||?
Другое дело, что может быть путаница из-за этого || — потому я всегда использую #.
                    У одного товара это ||63||, у другого может быть ||636||,||363|| (если параметр множественный и соответствующим образом настроен), у третьего ||6363|| и тут нет никаких пересечений — это разные строки.
Если прописывать в tvFilters %||[[*id]]||%, то все нормально будет выводиться.
На странице с ID=636 мы же ищем товар, у которого в TV есть именно такая подстрока: ||636||. С какой стати нам выведется товар с ||63||?
Другое дело, что может быть путаница из-за этого || — потому я всегда использую #.
                modx хранит значение tv checkbox в таком виде: 63||45||54
Т.е. разделитель в конце и в начале строки не пишется, вот я о чем. А условие subcategory==%||[[*id]]||% работает только для тех значений, которые в серидине строки, но не первые и не последние. тут либо мой вариант, либо tvFilters подставлять сниппет, который слегка модифицирует строку.
                    Т.е. разделитель в конце и в начале строки не пишется, вот я о чем. А условие subcategory==%||[[*id]]||% работает только для тех значений, которые в серидине строки, но не первые и не последние. тут либо мой вариант, либо tvFilters подставлять сниппет, который слегка модифицирует строку.
                А, ну тогда да. 
Сделайте, чтобы в базе было так: #63#||#66#||#636# и все будет гораздо проще ))
            
                    Сделайте, чтобы в базе было так: #63#||#66#||#636# и все будет гораздо проще ))
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.