mod_banners的joomla覆盖模型

时间:2013-05-10 08:07:13

标签: joomla joomla3.1

我正在使用Joomla 3.1而我正在使用模板黑客来覆盖mod_banners -

/mytemplate/html/mod_banners/default.php

哪种方法正常。

然而,banners模块调用文件:

/components/com_banners/models/banners.php

我似乎无法覆盖。我已经尝试将文件(和文件夹)移动到my / mytemplate / html文件夹中,但这不起作用。

我也尝试将以下代码放入我的横幅default.php文件中:

JModelLegacy::addIncludePath(JPATH_ROOT.'/templates/home/com_banners/models/', 'BannersModel');
$model      = JModelLegacy::getInstance('Banners', 'BannersModel', array('ignore_request' => true));
$banners    = $model->getItems();

但这也不起作用。有没有办法在不更改核心文件的情况下覆盖/com_banners/models/banners.php中的查询?

我所要做的就是在不改变核心的情况下提取每个横幅的描述。

提前致谢!

1 个答案:

答案 0 :(得分:1)

在Joomla中覆盖模型的唯一方法是制作您自己的原始版本,并在第一次访问模型之前通过系统插件加载(注册)它。对于您的用例,这太复杂了。

即使这不是一个好习惯,因为它打破了MVC结构,我会从模板中获取数据。

$db    = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('id, name, description')
      ->from('#__banners');
$db->setQuery($query);
$banners = $db->loadObjectList();

现在您可以访问所有横幅说明,fx。在循环中:

foreach ($banners as $banner) {
    echo $banner->id, ': ', $banner->description;
}