Материалы в Архиве - изменение фильтра в стандартном модуле

Тема в разделе "Программирование", создана пользователем SSerge22, 27.09.2013.

  1. Offline

    SSerge22 Недавно здесь

    Регистрация:
    27.09.2013
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Задача следующая: В стандартном модуле "Материалы в Архиве" вместо поля "Фильтр по заголовку" нужно поставить поле "Фильтр по категории". Т.е. Фильтр должен выглядеть так: "Фильтр по категории", "Год", "Месяц".
    Отчасти решил проблему (перехитрил Joomlу), достаточно корявым способом. Но красиво решить задачу пока не получается. Помогите, плиз!

    Сейчас принцип работы модуля "Материалы в Архиве" следующий. Список Названий Категорий берется из таблицы БД, и подставляется вместо поля "Фильтр по заголовку". Таким образом, есть возможность искать только те материалы, в которых название статьи совпадает с названием категории!

    Я сделал так:
    1) В файле components/com_content/views/archive/view.html.php

    Создаем функцию извлечения Категории из таблицы категорий БД
    Код (PHP):
    1. function getCategories() {
    2.     $db = JFactory::getDbo();
    3.     // Создаем новый объект запроса где id - некая родительская категория
    4.     $query = $db->getQuery(true);
    5.     $db->setQuery('SELECT title FROM #__categories WHERE parent_id=22 GROUP BY title ORDER BY created_time');
    6.     $array_cat = $db->loadResultArray();
    7.     array_unshift($array_cat, JText::_('SELECT_CAT')); // Константа SELECT_CAT="Выберите категорию"
    8.     $res_array = array_combine( $array_cat, $array_cat );
    9.     return $res_array;
    10.     };
    11. $cat_array = getCategories();
    12. // Формируем поле со списком категорий, которое затем передается в форму
    13.     $form->categories = JHtml::_(
    14.     'select.genericlist',
    15.     $cat_array,
    16.     'filter-search',
    17.     array(
    18.         'list.attr' => 'size="1" class="inputbox"',
    19.         'list.select' => $state->get('list.filter'),
    20.         'option.key' => null
    21.     ));

    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; ?>

    Как сделать полноценный фильтр? Заранее спасибо!
     
  2.  

Поделиться этой страницей

Загрузка...