首先要做的是不要破解核心文件,破解核心会阻止您使用内置更新功能来应用 Joomla 发布的常规错误修复和安全补丁!(例如最近发布的2.5.9 版本2.5.9 版本)。
而是复制它们并对其进行修改,以便将其称为其他名称,例如com_mybanners
. 除了文件夹名称和入口点文件(即banners.php
变为mybanners.php
)之外,您还需要将组件更新banners.xml
为mybanners.php
.
(您将需要复制和修改前端/components/com_banners/
和/administrator/components/mybanners.php
。)
由于横幅的工作方式(即横幅显示在模块中),您还需要复制和修改/modules/mod_banners/
,/modules/mod_banners/mod_banners.php
和/modules/mod_banners/mod_banners.xml
. 在每个位置更改mod_banners
为。mod_mybanners
在 Joomla!组件state
通常在实例化 JModel 时填充,但是,在这种情况下,组件实际上是关于管理横幅和记录显示由mod_banners
. 因此,您将需要添加一些代码来mod_mybanners.php
使用您想要操作的会话变量。
通常,当查询模型状态时,您将通过JInput收集变量并将它们添加到对象的状态中,例如
protected function populateState()
{
$jApp = JFactory::getApplication('site');
// Load state from the request.
$pk = $jApp->input->get('id',0,'INT');
$this->setState('myItem.id', $pk);
$offset = $jApp->input->get('limitstart',0,'INT');
$this->setState('list.offset', $offset);
// Load the parameters.
$params = $app->getParams();
$this->setState('params', $params);
// Get the user permissions
$user = JFactory::getUser();
if ((!$user->authorise('core.edit.state', 'com_mycomponent')) && (!$user->authorise('core.edit', 'com_mycomponent')))
{
$this->setState('filter.published', 1);
$this->setState('filter.archived', 2);
}
}
当populateState()
方法读取状态时调用该getState
方法。
这意味着您将不得不更改您的副本/components/com_banners/models/banner.php
以将变量捕获到与我上面的示例类似的对象状态中。
从那里它是你自己的所有代码。
您可以在Joomla 文档网站上的开发模型-视图-控制器教程中找到所有这些信息