Создание ссылок для автоматической установки фильтров к списку статей.
Предположим, Вы хотите создать ссылку в меню (или в любом другом месте), которая автоматически будет устанавливать необходимые фильтры для списка статей. Например: События на следующие 14 дней на расстоянии 20 миль от Лондона. Вы можете легко это сделать, используя новый интерфейс системы фильтров в Cobalt.
После драматической перекодировки всего механизма фильтрации, мы создали интерфейс для системы фильтров. И теперь Вы можете “общаться” с системой фильтров при помощи ссылок специального формата.
Формат ссылки состоит из постоянной части и набора параметров.
Постоянная часть ссылки выглядит так:
http://www.yoursite.com/index.php?option=com_cobalt&task=records.filter&...
В таблице ниже перечислены все параметры, которые Вы можете добавить к постоянной части ссылки
Параметр | Обязательный | Описание |
---|---|---|
section_id | ID раздела | |
Itemid | Itemid пункта меню. Пожалуйста устанавливайте этот параметр таким, каким Вы его установили в параметрах раздела. | |
cat_id | ID категории (если необходимо фильтровать только по одной категории) | |
filter_name | Массив имен фильтров. Объясняется позже. | |
filter_val | Массив значений фильтров. Объясняется позже. |
После нажатия на ссылку необходимые фильтры будут установлены и пользователь будет перенаправлен на список статей со стандартным URL. Вот почему необходимы параметры section_id, itemid and cat_id- чтобы перенаправить пользователя на правильную страницу. Пожалуйста, не забывайте корректно устанавливать эти параметры.
Каждая ссылка добавляет новые фильтры к уже существующим. Т.о. образом можно создавать каскад фильтров. Если перед установкой нового фильтра необходимо сбросить предварительно примененные фильтры, необходимо добавить в URL параметр &clean=1
, как показано на примере
http://www.com/index.php?option=com_cobalt&task=records.filter&clean=1&...
Вы можете установить одновременно любое количество фильтров, поэтому параметры filter_val
и filter_name
являются массивами. Например:
&filter_name[0]=filter_tag&filter_val[0]=2
В этом примере показываются все статьи с тэгом, у которого ID 2.
В таблице ниже приведен список доступных стандартных имен фильтров 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
§ion_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.
Сначала Вы должны создать имя фильтра. Оно состоит из префикса 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.1. Сброс всех фильтров
index.php?option=com_cobalt
&task=records.cleanall
§ion_id=2
&Itemid=123
###3.2. Сброс конкретного фильтра
index.php?option=com_cobalt
&task=records.clean
&clean[filter_k58596481bc7070e4adecd4f2e29569de]=1
§ion_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
§ion_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
.
или в столбце Ключ в менеджере полей (3).