大型插件涉及修改的文件较多的时候,把所有修改的文件可以都放在插件hook文件内,有朋友想能不能增加更多的文件夹放钩子?让涉及修改的文件能分门别类一目了然。让hook不是唯一文件夹,而是可以是hook、hook_admin、hook_lang、hook_block、hook_model、hook_view、hook_control任意一个。
 

修改lecms/xiunophp/lib/core.class.php文件

 

搜索public static function process_hook($matches) ,将下面代码替换掉process_hook系统函数

 

	/**
	 * 解析启用插件目录,是否有 hook , 以及插件目录hook文件夹下面是否有hook
	 * @param array $matches 参数数组
	 * @return string
	 */	
	public static function process_hook($matches) {
		$str = "\n";
		if(!is_dir(PLUGIN_PATH) || !empty($_ENV['_config']['plugin_disable'])) return $str;

		$plugins = core::get_plugins();
		if(empty($plugins['enable'])) return $str;

		$plugin_enable = array_keys($plugins['enable']);
		foreach($plugin_enable as $p) {
			$file = PLUGIN_PATH.$p.'/'.$matches[1];
			if( is_file($file) ){
                $s = file_get_contents($file);
                $str .= self::clear_code($s);
            }
			//新增更多hook
            $file_extensions = array('', '_admin', '_lang', '_block', '_model', '_view', '_control');
            foreach ($file_extensions as $ext) {
                $file = PLUGIN_PATH.$p.'/hook'.$ext.'/'.$matches[1];
                if (is_file($file)) {
                    $s = file_get_contents($file);
                    $str .= self::clear_code($s);
                }
            }
		}
		return $str;
	}	

 

$file_extensions = array('', '_admin', '_lang', '_block', '_model', '_view', '_control');说明

 

_admin代表为后台管理钩子,可以将涉及到后台修改的文件钩子文件放在此文件夹;

 

_lang代表为lang钩子,可以将涉及到语言包修改的文件钩子文件放在此文件夹;

 

_block代表为block钩子,可以将涉及到block修改的文件钩子文件放在此文件夹;

 

_model代表为model钩子,可以将涉及到model修改的文件钩子文件放在此文件夹;

 

_view代表为view钩子,可以将涉及到后台或者前台主题文件修改的文件钩子文件放在此文件夹;

 

_control代表为control钩子,可以将涉及到contro修改的文件钩子文件放在此文件夹。

特别声明:本站所有资源均为学习测试使用,请在下载后48小时之内自主删除,本站以学习为目的不承担任何法律责任!