我正在使用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中的查询?
我所要做的就是在不改变核心的情况下提取每个横幅的描述。
提前致谢!
答案 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;
}