Search Documentation

Создание пре-фильтровых ссылок

Создание ссылок для автоматической установки фильтров к списку статей.

Предположим, Вы хотите создать ссылку в меню (или в любом другом месте), которая автоматически будет устанавливать необходимые фильтры для списка статей. Например: События на следующие 14 дней на расстоянии 20 миль от Лондона. Вы можете легко это сделать, используя новый интерфейс системы фильтров в Cobalt.

1. Создание URL

После драматической перекодировки всего механизма фильтрации, мы создали интерфейс для системы фильтров. И теперь Вы можете “общаться” с системой фильтров при помощи ссылок специального формата.

Формат ссылки состоит из постоянной части и набора параметров.

Постоянная часть ссылки выглядит так:

http://www.yoursite.com/index.php?option=com_cobalt&task=records.filter&...

В таблице ниже перечислены все параметры, которые Вы можете добавить к постоянной части ссылки

Параметр Обязательный Описание
section_id Yes ID раздела
Itemid Yes Itemid пункта меню. Пожалуйста устанавливайте этот параметр таким, каким Вы его установили в параметрах раздела.
cat_id No ID категории (если необходимо фильтровать только по одной категории)
filter_name Yes Массив имен фильтров. Объясняется позже.
filter_val Yes Массив значений фильтров. Объясняется позже.

После нажатия на ссылку необходимые фильтры будут установлены и пользователь будет перенаправлен на список статей со стандартным URL. Вот почему необходимы параметры section_id, itemid and cat_id- чтобы перенаправить пользователя на правильную страницу. Пожалуйста, не забывайте корректно устанавливать эти параметры.

Каждая ссылка добавляет новые фильтры к уже существующим. Т.о. образом можно создавать каскад фильтров. Если перед установкой нового фильтра необходимо сбросить предварительно примененные фильтры, необходимо добавить в URL параметр &clean=1, как показано на примере

http://www.com/index.php?option=com_cobalt&task=records.filter&clean=1&...

2. Установка фильтров

Вы можете установить одновременно любое количество фильтров, поэтому параметры filter_val и filter_name являются массивами. Например:

&filter_name[0]=filter_tag&filter_val[0]=2

В этом примере показываются все статьи с тэгом, у которого ID 2.

2.1. Стандартные фильтры

В таблице ниже приведен список доступных стандартных имен фильтров filter_name и их значений filter_val.

Имя фильтра Значение фильтра Описание
filter_tpl default Имя шаблона списка статей. If you want to use settings of the template you have to include filter configuration key. Что-то типа default.b604f5fb1ca89b8be2706881a530680f. Как получить этот ключ? Just look temmplate select source code in section edit page.
filter_cat 2 ID категории
filter_user 42 ID пользователя
filter_tag 2 ID тэга
filter_type 1 ID типа контента
filter_search what is life Строка поиска

Ниже приведен пример. Запись ссылки должна быть в одну строку, я форматировал ее для более удобной читаемости.

http://www.com/index.php
	?option=com_cobalt
	&task=records.filter
	&section_id=2
	&Itemid=126
	&filter_name[0]=filter_type
	&filter_val[0]=2
	&filter_name[1]=filter_user
	&filter_val[1]=42

В этом примере будут показаны все записи пользователя Супер Администратор (с ID 42) и типом контента ID 2.

2.2. Фильтры по полям

Сначала Вы должны создать имя фильтра. Оно состоит из префикса filter_ и ключа поля. Т.о. имя фильтра будет похоже на следующее

&filter_name[0]=filter_k2hgsd5FdK79H6Gfdt6hxnsgF55fd

Теперь Вы должны установить значение фильтра. Это действие может быть различным для каждого конкретного поля, но в основном используются два типа. Простое значение может выглядеть так

&filter_val[0]=value%201

Значение фильтра должно быть в URL кодировке. Для перевода значения в URL кодировку можно воспользоваться следующим сервисом. Если Вы посмотрите, значение %20 соответствует пробелу.

Значение фильтра может быть массивом

&filter_val[0][]=value%201&filter_val[0][]=value%202

В этом случае будут выбраны все записи, содержащие Value 1 ИЛИ Value 2

Для некоторых полей необходимо устанавливать массив ключей. Например, координаты для поля Geo

&filter_val[0][lat]=41.25458745&filter_val[0][lng]=21.2654789

или диапазон дат для поля DateTime. Здесь первое значение соответствует начальной дате (data from), а второе- конечной дате (date to).

filter_val[0][range]=2014-09-01,2014-09-30

Для поля Boolean значениями фильтра будут true или false

&filter_val[0]=true

Немного сложнее устанавливать значения фильтра для поля Multi Level Select. Например, запись значения фильтра может выглядеть так

filter_val[0][1]=5

здесь [0]- индекс значения первого фильтра, [1]- индекс массива, соответствующий второму уровню (т.к. нумерация уровней начинается с 0) , 5- ID самого значения фильтра. Это значение можно посмотреть ………… ГДЕ?

3. Сброс фильтров.

Иногда необходимо сбросить все фильтры или один конкретный фильтр.

###3.1. Сброс всех фильтров

index.php?option=com_cobalt
     &task=records.cleanall
     &section_id=2 
     &Itemid=123

###3.2. Сброс конкретного фильтра

index.php?option=com_cobalt
     &task=records.clean
     &clean[filter_k58596481bc7070e4adecd4f2e29569de]=1
     &section_id=2 
     &Itemid=123

В таблице приведен список возможных параметров для сброса фильтров

Тип фильтра Описание
filter_search Сброс фильтра по текстовому поиску
filter_type Сброс фильтра по типу контента
filter_tag Сброс фильтра по тэгу
filter_user Сброс фильтра по пользователю
filter_alpha Сброс фильтра по альфа-индексу
filter_cat Сброс фильтра по категории
filter_[key] Сброс фильтра по полю. Вы должны изменить [key] на ключ поля, как показано в предыдущем примере.

Вы можете сбросить несколько фильтров одновременно:

index.php?option=com_cobalt
     &task=records.clean
     &clean[filter_k58596481bc7070e4adecd4f2e29569de]=1
     &clean[filter_type]=1
     &clean[filter_alpha]=1
     &section_id=2 
     &Itemid=123

Вопрос: Что такое ключ поля?

Ключ поля является частью поддержки нескольких типов контента в шаблонах. Ключ поля строится как MD5 из типа поля и его метки.

$field_key = 'k'.md5($field->label.'-'.$field->field_type); 

Если метка поля Year и тип поля digits, то

$field_key = 'k'.md5('Year-digits');

Вы можете посмотреть ключ поля в базе данных в столбце key таблицы jos_js_res_fields.

Field key

или в столбце Ключ в менеджере полей (3).

Field key