Joomla - 有机会覆盖com_content / models / category.php吗?

时间:2014-01-23 20:26:55

标签: php joomla model override

我正在尝试使用模板来处理Joomla 3中的排序菜单。 我正在使用类别布局和一个工作正常的无限加载脚本。 之后,我从 categorie_list 模块中创建了一个新菜单,该模块将这样的参数(?category=your_category)添加到标签中。

现在为了让这个系统工作,我需要更改博客视图从中获取文章的类别。

我已经找到了

的位置
components/com_content/models/category.php

第222行

function getItems()
{
    $limit = $this->getState('list.limit');

    if ($this->_articles === null && $category = $this->getCategory())
    {
        $model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));
        $model->setState('params', JFactory::getApplication()->getParams());
        $model->setState('filter.category_id', '$category->id'); // <- here!!!
        $model->setState('filter.published', $this->getState('filter.published'));
        $model->setState('filter.access', $this->getState('filter.access'));
        $model->setState('filter.language', $this->getState('filter.language'));
        $model->setState('list.ordering', $this->_buildContentOrderBy());
        $model->setState('list.start', $this->getState('list.start'));
        $model->setState('list.limit', $limit);
        $model->setState('list.direction', $this->getState('list.direction'));
        $model->setState('list.filter', $this->getState('list.filter'));
        // filter.subcategories indicates whether to include articles from subcategories in the list or blog
        $model->setState('filter.subcategories', $this->getState('filter.subcategories'));
        $model->setState('filter.max_category_levels', $this->setState('filter.max_category_levels'));
        $model->setState('list.links', $this->getState('list.links'));

        if ($limit >= 0)
        {
            $this->_articles = $model->getItems();

            if ($this->_articles === false)
            {
                $this->setError($model->getError());
            }
        }
        else
        {
            $this->_articles = array();
        }

        $this->_pagination = $model->getPagination();
    }

    return $this->_articles;
}

由于我不知道,如何在模板中覆盖模型甚至使用Google搜索它,我发现只需通过插件导入它。 这不是我需要和想要的东西。

也许你们有一个方便的伎俩。

1 个答案:

答案 0 :(得分:1)

第一个建议
如何从Joomla中覆盖组件mvc!芯
http://docs.joomla.org/How_to_override_the_component_mvc_from_the_Joomla!_core
注意:此方法仅适用于安装和启用第三方MVC插件 - 或提供您自己的等效插件。这对高级开发人员来说很好 - 请注意,这不是Joomla的一部分!核心代码。

第二个建议
复制整个核心组件,破解副本并将副本打包为新名称(例如com_mycustomcontent)。通过这样做,您将不会遇到升级问题,除非原始组件存在安全问题。这意味着如果您不知道如何将原始组件的更新应用于组件,那么您将陷入困境。