我想更改已安装的Clementine Framework模块的行为。如何覆盖Clementine Framework中的模块
我知道我不应该改变app/share/
中的代码,因为我的更改会被破坏。我如何让他们坚持下去?
我想更改已安装的Clementine Framework模块的行为。如何覆盖Clementine Framework中的模块
我知道我不应该改变app/share/
中的代码,因为我的更改会被破坏。我如何让他们坚持下去?
只需覆盖您想要的功能。您可以覆盖控制器,模型,帮助程序,视图块和配置文件。
对于控制器,模式和助手,您扩展定义要改变代码的类。 Clementine Framework将自动地使用使用您的代码而不是您重写的代码。
例如,要覆盖控制器Users::createAction()
(在app/share/users/ctrl/usersUsersController.php
定义)IL,创建一个新的文件app/local/site/ctrl/siteUsersController.php
这样看:如果你想覆盖一个视图块
<?php
class siteUsersController extends siteUsersController_Parent
{
public function indexAction($request, $params = null)
{
//do your specific stuff here
//then return parent:: function
return parent::indexAction($request, $params);
}
}
,例如是在app/share/users/view/users/index.php
定义的块,创建一个新的文件app/local/site/view/users/index.php
看起来像这样:
<?php
//display specific stuff here
//then display parent block
$this->getParentBlock($data, $request);
如果你想覆盖一些配置,例如是在文件app/share/users/etc/config.ini
的[module_users]
部分定义的send_account_confirmation
选项,编辑您app/local/site/etc/config.ini
文件,添加一个[module_users]
部分和覆盖选项:
[module_users]
send_account_confirmation="1"