Задача следующая: В стандартном модуле "Материалы в Архиве" вместо поля "Фильтр по заголовку" нужно поставить поле "Фильтр по категории". Т.е. Фильтр должен выглядеть так: "Фильтр по категории", "Год", "Месяц".
Отчасти решил проблему (перехитрил Joomlу), достаточно корявым способом. Но красиво решить задачу пока не получается. Помогите, пожалуйста!
Сейчас принцип работы модуля "Материалы в Архиве" следующий. Список Названий Категорий берется из таблицы БД, и подставляется вместо поля "Фильтр по заголовку". Таким образом, есть возможность искать только те материалы, в которых название статьи совпадает с названием категории!
Я сделал так:
1) В файле components/com_content/views/archive/view.html.php
Создаем функцию извлечения Категории из таблицы категорий БД
function getCategories() {
$db = JFactory::getDbo();
// Создаем новый объект запроса где id - некая родительская категория
$query = $db->getQuery(true);
$db->setQuery('SELECT title FROM #__categories WHERE parent_id=22 GROUP BY title ORDER BY created_time');
$array_cat = $db->loadResultArray();
array_unshift($array_cat, JText::_('SELECT_CAT')); // Константа SELECT_CAT="выбирите категорию"
$res_array = array_combine( $array_cat, $array_cat );
return $res_array;
};
$cat_array = getCategories();
// Формируем поле со списком категорий, которое затем передается в форму
$form->categories = JHtml::_(
'select.genericlist',
$cat_array,
'filter-search',
array(
'list.attr' => 'size="1" class="inputbox"',
'list.select' => $state->get('list.filter'),
'option.key' => null
));
2) В файле components/com_content/views/archive/tmpl/default.php
Убираем поле фильтра:
<input type="text" name="filter-search" id="filter-search" value="<?php echo $this->escape($this->filter); ?>" class="inputbox" onchange="document.getElementById('adminForm').submit();" />
Вставляем новое поле Фильтра (списка) категорий:
<?php echo $this->form->categories; ?>
Как сделать полноценный фильтр? Заранее спасибо!