MODx Украина » Простая фильтрация в Ditto

Простая фильтрация в Ditto(перевод)

 

Ditto позволяет использовать параметр &filter чтобы исключить(отфильтровать) не нужные документы из выборки. Т.е. любой документ, который отвечает критериям фильтра будет удален из вывода. (прим.: если нужно обратное можно инвертировать это не проблема)

Запрос фильтра

Запрос фильтр это отформатированный текст в соответствии со следующими правилами. Фильтр состоит из трех правил, разделенных разделителем в виде:

поле,критерий,тип

Где:

  • «поле» это имя любой переменной шаблона или TV в MODx.
  • «критерий» это значение кое какого типа данных (число, строка, дата и т.д.) как и поле.
  • «тип» это число от 1 до 8 которое определяет какой тип сравнения данных необходимо произвести между значением поля и заданным критерием.
  • «,» (кома) это «Локальный разделитель фильтра», т.е. знак который говорит  Ditto где находиться деление между тремя частями запроса.

Не должно быть пробелов в «критерий», только если вы хотите их использовать в сравнении.

 

Пример

Запрос фильтра:

id,50,2

означает «исключить любые документы с id равным 50.»

 

Мульти-запросы фильтра

Фильтр может содержать несколько запросов разделенных глобальным разделителем - «|», например:

запрос|запрос|запрос|и т.д.

Где:

  • «Запрос» какие-либо фильтры как показано выше.
  • «|» это Глобальный разделитель фильтра, знак который сообщает Ditto где находиться разделение между запросами фильтра.
  • «и т.д.» значит что количество запросов не ограничено.


Мульти-запросы имеют отношение между собой - «ИЛИ». Т.е.  Документ будет исключен, если он удовлетворяет критерию в любом из запросов.

 

Пример

Фильтр:

id,50,2|id,52,2

означает «исключить любые документы с 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

   

Понравилась статья?

Тогда подпишитесь на:

  1. RSS-ленту
  2. Email рассылку
  3. Twitter ленту
  4. Facebook ленту или нашу Facebook страницу!

Также вас могут заинтересовать:


Комментариев
Комментарии работают на Disqus