钩子
ClassCMS中通过C函数调用各个应用的方法,钩子功能依靠C函数实现,通过钩子可以很容易实现各种网站功能.
钩子可以修改调用应用方法时的参数,也可以修改应用方法返回的结果.
hook方法
应用主文件内 hook方法,返回当前应用的钩子列表.
hookname为当前应用的方法,hookedfunction为被挂载钩子的应用方法,enabled为是否启用钩子.
hookname hookedfunction区分大小写,必须与应用方法名大小写一致
function hook(){
$hooks=array();
$hooks[]=array('hookname'=>'articleadd','hookedfunction'=>'cms:article:add','enabled'=>1);
$hooks[]=array('hookname'=>'articleedit','hookedfunction'=>'cms:article:edit','enabled'=>1);
Return $hooks;
}
如果articleadd或articleedit方法在应用的其它模块中,则hookname改成 模块名:方法,如模块名为article
function hook(){
$hooks=array();
$hooks[]=array('hookname'=>'article:articleadd','hookedfunction'=>'cms:article:add','enabled'=>1);
$hooks[]=array('hookname'=>'article:articleedit','hookedfunction'=>'cms:article:edit','enabled'=>1);
Return $hooks;
}
当应用在后台(启用,更新,后台应用设置保存)时,钩子列表会存入数据库中.
应用版本升级时,如有不需要用到某个钩子,请停用或删除,以免造成钩子残留
搭配应用变量使用
ClassCMS后台内置了简单的应用设置页面,可以编辑应用变量,详见:应用主文件 config 应用变量.
搭配应用变量,可以简单的启停某个钩子,如:
<?php
class test{
function config(){
$configs=array();
$configs[]=array('configname'=>'启用钩子','hash'=>'ifhook','inputhash'=>'switch','tips'=>'','tabname'=>'hook','defaultvalue'=>'1');
Return $configs;
}
function hook(){
$hooks=array();
if(config('ifhook')) {
$hooks[]=array('hookname'=>'articleadd','hookedfunction'=>'cms:article:add','enabled'=>1);
$hooks[]=array('hookname'=>'articleedit','hookedfunction'=>'cms:article:edit','enabled'=>1);
}
Return $hooks;
}
}
?>