Joomla 1.6 SOS! Добавление дополнительного фильтра в модель вида блога

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

  1. Offline

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

    Регистрация:
    22.11.2010
    Сообщения:
    11
    Симпатии:
    0
    Пол:
    Мужской
    Задача состоит в том, чтобы добавить в блог категорий возможность фильтровать статьи по их дате снятия с публикации.
    Начать решил с разбора модели category.php и нашел там функцию getItems() отвечающую (как я полагаю) за то, какие статьи подгружать.
    Решил проверить своё предположение. Если заменить к примеру
    Код (PHP):
    1. $model->setState('filter.category_id', $category->id);

    на
    Код (PHP):
    1. $model->setState('filter.category_id', 23);

    Выводиться только материалы из категории с id= 23.

    Результат меня сильно воодушевил и чисто ради эксперимента, я на радостях леплю в общий список фильтров
    Код (PHP):
    1. $model->setState('filter.created_by', 43);


    и... Ничего не происходит. :( По идеи должны выводиться только статьи с полем created_by равным 43, но выводятся почему то все.
    Друзья, очень прошу разобраться с этой проблемой. Заказчик уже брызжит слюной, а у меня никаких идей как решить эту проблему.

    Здесь код функции если кому поможет.
    Код (PHP):
    1. function getItems()
    2.     {
    3.         $params = $this->getState()->get('params');
    4.         $limit = $this->getState('list.limit');
    5.  
    6.         if ($this->_articles === null && $category = $this->getCategory()) {
    7.             $model = JModel::getInstance('Articles', 'ContentModel', array('ignore_request' => true));
    8.             $model->setState('params', JFactory::getApplication()->getParams());
    9.             $model->setState('filter.category_id', $category->id);
    10.             $model->setState('filter.published', $this->getState('filter.published'));
    11.             $model->setState('filter.access', $this->getState('filter.access'));
    12.             $model->setState('filter.language', $this->getState('filter.language'));
    13.             $model->setState('list.ordering', $this->_buildContentOrderBy());
    14.             $model->setState('list.start', $this->getState('list.start'));
    15.             $model->setState('list.limit', $limit);
    16.             $model->setState('list.direction', $this->getState('list.direction'));
    17.             $model->setState('list.filter', $this->getState('list.filter'));
    18.             // filter.subcategories indicates whether to include articles from subcategories in the list or blog
    19.             $model->setState('filter.subcategories', $this->getState('filter.subcategories'));
    20.             $model->setState('filter.max_category_levels', $this->setState('filter.max_category_levels'));
    21.             $model->setState('list.links', $this->getState('list.links'));
    22.  
    23.             if ($limit >= 0) {
    24.                 $this->_articles = $model->getItems();
    25.  
    26.                 if ($this->_articles === false) {
    27.                     $this->setError($model->getError());
    28.                 }
    29.             }
    30.             else {
    31.                 $this->_articles=array();
    32.             }
    33.  
    34.             $this->_pagination = $model->getPagination();
    35.         }
    36.  
    37.         return $this->_articles;
    38.     }
     
  2.  

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

Загрузка...