大概了解..感谢大神更新分享!
admin 2016-10-5
在HYBBS1.4.0.18中加入了 新的插件机制
该机制优先级要高于 hook机制
说太多废话没啥用 直接用例子去说明 这是什么鬼
看这个文章前你必须知道之前的hook机制 以及之前的插件机制 , 否则你不知道这篇文章说什么鬼
首先你先必须创建一个插件. 这些步骤请到之前的 插件制作教程中查看, 如果你没看过 下面的东西你是完全看不懂的
首先创建一个插件, 已知插件名: hy_xxx
那么请在hy_xxx目录下创建文件 re.php 内容写入
<?php return array( 'Action/Index.php'=>array( 're/a1'=>'re/b1' ) );
可见 array 索引中写入了
'Action/Index.php'=>array(
're/a1'=>'re/b1'
)
这是什么鬼意思呢 ?
我他妈都忘记是什么鬼意思了
开个小玩耍 开个小玩耍
<?php return array( 'Action/Index.php'=>array( '目录名/关键字文件名'=>'目录名/替换值文件名' ) );
<?php return array( 'Action/Index.php'=>array( 're/a1'=>'re/b1' ) );
Action/Index.php 需要修改的文件, 找到需要修改的部分
以下是论坛Action/Index.php的部分代码
<?php namespace Action; use HY\Action; !defined('HY_PATH') && exit('HY_PATH not defined.'); class IndexAction extends HYBBS { public function __construct(){ parent::__construct(); //{hook a_index_init} } public function Index(){ //{hook a_index_index_1} $this->v('title',$this->conf['title']); //--------------这句 $pageid=intval(X('get.pageid')) or $pageid=1; $type = X('get.type') or $type='New'; if($type != 'New' && $type != 'Btime') $type=''; $this->v("type",strtolower($type)); ... ... ... ..省略
比如我想替换 代码中 标注的那句
$this->v('title',$this->conf['title']);
替换为 (注意 必须保留原句)
$this->v('title',$this->conf['title']); echo 'test';
那如何做到呢 ? 再看一下 re.php 的内容
<?php return array( 'Action/Index.php'=>array( 're/a1'=>'re/b1' ) );
可见'Action/Index.php' 中的 're/a1'=>'re/b1' 是什么鬼呢?
re/a1指的是 hy_xxx/re 目录下的 a1 文件
re/b1则是 hy_xxx/re 目录下的 b1文件
当然 re目录是可以自己定义名字的 (最好保留英文名)
最终的意思是指 查找 a1文件的内容 替换为 b1的文件的内容
所以我们需要在在a1文件中写入
$this->v('title',$this->conf['title']);
而 b1中写入
$this->v('title',$this->conf['title']); echo 'test';
这样就实现了
在Action/Index.php查找 a1文件的内容的关键字 替换为 a2文件里的内容
<?php return array( 'Action/Index.php'=>array( 're/a1'=>'re/b1', 're/a2'=>'re/b2' ), 'View/hy_boss/h.html'=>array( 're/h1'=>'re/j1', 're/h2'=>'re/j2' ),
目前支持修改的类型有
Action
Model
View