2014 26 сентября

Joomla 2.5 Добавляем параметр фильтрации материалов в меню

Можно считать это продолжением и расширением темы Добавляем новую сортировку материалов в меню

У нас в таблице контента есть свое поле, в моем случае это тип недвижимости: продажа\аренда Деление по категориям мне не подходит по определенным причинам. Значит при создании ссылки в меню на блог материалов категории я хочу выводить отдельно ссылками продажу и аренду, хотя находятся все объекты в одной категории

Итак, пошагово

1 - в таблице #__content добавил поле p_type 2 - добавил в administrator\components\com_content\models\forms\article.xml новое поле и в administrator\components\com_content\views\article\tmpl\edit.php его редактирование. В моем случае это список
1
23
45
<field name="p_type" type="list" label="Тип объекта" description="Выберите тип объекта" default="0">
        <option value="">--</option>        <option value="0">Продажа квартир</option>
        <option value="1">Аренда квартир</option>  </field>
3 - создал отдельный шаблон вывода материалов контента в режиме блог catalog.xml (про шаблонизацию сейчас не буду, ссылок много как это сделать) 4 - в этом файле \templates\шаблон\html\com_content\category\catalog.xml в блоке params добавляем аналогичный код (лучше вынести значения в отдельную таблицу и работать с типом поля sql)
1
23
45
67
<fields name="params">
        <fieldset name="basic" label="JGLOBAL_CATEGORY_OPTIONS">                <field name="p_type" type="list" label="Тип объекта" description="">
                        <option value="">--</option>                        <option value="0">Продажа квартир</option>
                        <option value="1">Аренда квартир</option>                </field>
5 - файл \components\com_content\models\articles.php в функции getListQuery где-то в конце, перед return $query; написать
1
23
4
// filter by myfield
if ($params->get('p_type') != '') {        $query->where('a.p_type = '.$params->get('p_type').' ');
}
В итоге админка пункта меню становится вот такой menu_with_custom_field

А на фронте в блоге категории будут показываться те материалы, у которых указан данный параметр. Если не указано ничего, соответственно where не работает и показываются все, согласно прочим стандартным настройкам

Комментарии

Оставить коммент

Защитный код
Обновить