Условия для фильтра по TV (tvFilters)
Всем доброго времени суток, есть вопрос:
При фильтре по ID документа
Он выводит все похожие. Например, если ID=12, то в списке выведутся и 120 и 112 и т.д.
мне надо четкое соответствие — подскажете как это реализовать?
Понятно, что дело в %%, но убирая их вообще ничего не выводится. Уже голову сломал (((
При фильтре по ID документа
&tvFilters=`my_filter==%[[+id]]%`
.Он выводит все похожие. Например, если ID=12, то в списке выведутся и 120 и 112 и т.д.
мне надо четкое соответствие — подскажете как это реализовать?
Понятно, что дело в %%, но убирая их вообще ничего не выводится. Уже голову сломал (((
Комментарии: 6
Добавить какие-либо нецифровые символы в возможные значения TV, чтобы прописывалось, к примеру, так:
Ну и в вызове:
_120_
_112_
Ну и в вызове:
&tvFilters=`my_filter==%_[[+id]]_%`
К сожалению, этот вариант не подходит. (((
id назначает сам ModX к документу, а не я руками.
id назначает сам ModX к документу, а не я руками.
Можете использовать конструкцию FIND_IN_SET запрос будет примерно такой:
$prefix = $modx->getOption('table_prefix');
$sql1 = "SELECT * FROM ".$prefix."site_tmplvar_contentvalues WHERE tmplvarid = 14 AND FIND_IN_SET('".$id."', replace(value, '||', ','))";
$statement = $modx->query($sql1);
$arr1 = $statement->fetchAll(PDO::FETCH_ASSOC);
foreach($arr1 as $item){
$output[] = $item['contentid'];
}
Идентификатор TV и ресурса измените на свои. Здесь это уже обсуждалось, например, здесь. Ну, и из поста можете использовать в параметре where pdoResources:[[!pdoPage?
&limit=`18`
&includeTVs=`categories`
&where=`["1 = 1 AND FIND_IN_SET('[[*id]]', replace(categories, '||', ','))"]`
]]
Артем, огромное спасибо!
Идеально подошло решение добавить строку &where:
Буду смотреть везде ли правильно отрабатывает. Но первичный анализ показал, что это именно то, что нужно!
Идеально подошло решение добавить строку &where:
&tvFilters=`my_filter==%[[+id]]%`
&where=`["1 = 1 AND FIND_IN_SET('[[+id]]', replace(my_filter, '||', ','))"]`
.Буду смотреть везде ли правильно отрабатывает. Но первичный анализ показал, что это именно то, что нужно!
Tvfilters параметр не нужен в вашем случае
У меня в Tvfilters есть еще условия для фильтра. Просто тут не указал. ))
Спасибо!
Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.