|
|
Добавление фильтра в компонент Joomla
- Подробности
- Категория: Разработка в Joomla
Как добавить фильтр в свой компонент Joomla?
Допустим? у нас есть какая-то таблица, в которой записи подразделяются на категории. Для организации дерева категорий будем использовать категории Joomla.
Теперь добавим поле фильтра на страницу с записями
<fieldset id="filter-bar">
<div class="filter-select fltrt">
<select name="filter_category_id" class="inputbox" onchange="this.form.submit()">
<option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option>
<?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_jdvimageslist'), 'value', 'text', $this->filter_category_id); ?>
</select>
</div>
</fieldset>
Форма отправляется после выбора категории из списка
onchange="this.form.submit()"
Нужно чтобы значение категории запоминалось в сессии и использовалось в выборке записей.
Выборка записей находится в файле соответствующей модели:
protected function getListQuery()
{
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('id,images,title_alias,introtext,urls,catid');
$app = &JFactory::getApplication('site');
$option = JRequest::getWord('option');
$catid = $app->getUserStateFromRequest($option.'.f_categories', 'filter_category_id', 0);
if ($catid){
$query->where("catid=$catid");
}
$query->from('#__jdvimageslist');
return $query;
}
в результате переменная filter_category_id будет браться из отправляемой формы и id категории будет заноситься в сессию в область
$option.'.f_categories'
и применяться в SELECT запросе
if ($catid){
$query->where("catid=$catid");
}


