Простая фильтрация в Ditto(перевод)
Ditto позволяет использовать параметр &filter чтобы исключить(отфильтровать) не нужные документы из выборки. Т.е. любой документ, который отвечает критериям фильтра будет удален из вывода. (прим.: если нужно обратное можно инвертировать это не проблема)
Запрос фильтра
Запрос фильтр это отформатированный текст в соответствии со следующими правилами. Фильтр состоит из трех правил, разделенных разделителем в виде:
Где:
- «поле» это имя любой переменной шаблона или TV в MODx.
- «критерий» это значение кое какого типа данных (число, строка, дата и т.д.) как и поле.
- «тип» это число от 1 до 8 которое определяет какой тип сравнения данных необходимо произвести между значением поля и заданным критерием.
- «,» (кома) это «Локальный разделитель фильтра», т.е. знак который говорит Ditto где находиться деление между тремя частями запроса.
Не должно быть пробелов в «критерий», только если вы хотите их использовать в сравнении.
Пример
Запрос фильтра:
означает «исключить любые документы с id равным 50.»
Мульти-запросы фильтра
Фильтр может содержать несколько запросов разделенных глобальным разделителем - «|», например:
Где:
- «Запрос» какие-либо фильтры как показано выше.
- «|» это Глобальный разделитель фильтра, знак который сообщает Ditto где находиться разделение между запросами фильтра.
- «и т.д.» значит что количество запросов не ограничено.
Мульти-запросы имеют отношение между собой - «ИЛИ». Т.е. Документ будет исключен, если он удовлетворяет критерию в любом из запросов.
Пример
Фильтр:
означает «исключить любые документы с id 50 или 52.»
Типы сравнения
Тип |
Исключить документ, если его значение в указанном поле |
1 |
не соответствует критерию (!=) |
2 |
соответствует критерию (==) |
3 |
меньше критерия (<) |
4 |
больше критерия (>) |
5 |
меньше или равен критерию (<=) |
6 |
больше или равен критерию (>=) |
7 |
не содержит текст критерия |
8 |
содержит текст критерия |
Примечание: если вам необходимо например не исключить документы из выборки, а наоборот включить то вместо 8 нужно 7, а вместо 2 нужно 1(т.е. необходимо инвертировать выбор). Это связано с тем что фильтр не включает документы, а исключает.
@EVAL привязки
@EVAL в фильтрах работает так же, как это происходит в MODx за исключением того, что могут быть использованы только с базовой фильтрацией, а не пользовательской (теги и т.д.). Убедитесь, что вы вернете значение, которое вы хотите чтобы Ditto отфильтровал и что код валидный PHP.
Альтернативные Разделители
Ditto предлагает параметры для изменения разделителя в фильтре. Может понадобиться если есть необходимость использовать символы «|» и «,» непосредственно в фильтре
Параметры:
Параметр |
Описание |
Тип значения |
Допустимые значения |
Значение по-умолчанию |
&filter |
Используя этот параметр вы можете сообщить Ditto исключить из вывода некоторые документы которые соответствуют критериям. |
text string |
(смотрите правила фильтров выше) |
пусто |
&globalFilterDelimiter |
Если вы хотите использовать другой символ вместо «|» то вы можете указать этот символ в параметре. |
один знак |
Любой знак не используемый в самом фильтре(имеется ввиду в критерии) |
символ трубы ( «|» ) |
&localFilterDelimiter |
Если вы хотите ипользовать другой символ вместо «,» то вы можете указать этот символ в параметре. |
один знак |
Любой знак не используемый в самом фильтре(имеется ввиду в критерии) |
комма («,») |
&where |
MySQL WHERE запрос. |
text string |
Валидный MySQL WHERE запрос используя только переменные шаблонов (не TV) |
пусто |
Основано на работах Bill Fernandez
Данная статья является переводом статьи Basic Filtering
Перевод выполнен Даниилом Оросом: oros.kiev.ua
Понравилась статья?
Тогда подпишитесь на:
|
Также вас могут заинтересовать:
Комментариев
Комментарии работают на Disqus