2

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

/mytemplate/html/mod_banners/default.php

哪个工作正常。

但是,banners 模块调用该文件:

/components/com_banners/models/banners.php

我似乎无法覆盖。我尝试将文件(和文件夹)移动到我的 /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 中的查询而不更改核心文件?

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

提前致谢!

4

1 回答 1

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;
}
于 2013-05-10T11:34:27.950 回答