关注安徽站长创业、网站优化、网站推广及搜索引擎优化(SEO)的自媒体平台,分享最新的seo和网站优化知识

如何在AKCMS中HOOK(钩子)执行自己的代码?

发布:雷都SEO2019-12-29 15:21分类: akcms使用手册 标签: akcms

本功能为二次开发者设计,站长看不懂不影响正常使用,绕行即可。

在二次开发中常常遇到这样的情况,希望自己的代码在页面打开之前有机会执行。比如这种需求:判断是搜索引擎的蜘蛛,就做出一定的动作。这样的代码就需要在页面打开之前执行。

不需要修改AKCMS的代码即可实现这样的功能,不修改AKCMS代码的好处是保持以后升级的时候不需要把修改过的文件,修改过的代码merge到新的版本中,始终保持独立。

AKCMS 2.7以上版本在动态执行时会检查(/plugins/runtime/)中是否有_before.php结尾的文件,如果有就在页面打开之前执行他们。页面打开完毕后检查(/plugins/runtime/)中是否有_after.php结尾的文件,如果有就执行他们。

例如这个需求:把所有动态执行的每一次访问的访问地址都记下日志以便分析。

拷贝以下代码:

<?php
error_log($_SERVER['REQUEST_URI']."\n", 3, AK_ROOT.'./logs/log.txt');
?>

保存为/plugins/runtime/log_after.php即可。

注意:生成静态页之后,直接就是HTML文件的显示,当然不能执行任何代码,所以本文所说的功能都是针对AKCMS动态执行时而言。

 

3.8新增功能:采集功能的hook

hook程序的以函数的形式统一写在configs/hook.php中,函数命名规则:

1 采集列表页的hook,命名为hook_spidelist_123(123代表采集规则ID,下同)
2 采集内容页的hook,命名为hook_spiderurl_123

以数组的形式向hook函数传入已经采集到的全部数据。举一个例子:要把采集内容页(假设内容页采集规则的ID是1)采集到的title中的字母全部大写就在/configs/hook.php中增加这样一个函数:

function hook_spiderurl_1($value) {
$value['title'] = strtoupper($value['title']);
return $value;
}

保存后就立即生效了,下次采集完ID1的采集规则后,会自动调用这个函数,实现你想要的功能。

3.8.4新增功能:保存内容的hook

hook程序的以函数的形式统一写在configs/hook.php中,函数命名规则:

1 修改内容正文的hook,命名为hook_saveitemdata_123(123代表所属模块ID,下同)

函数会传入两个参数,第一个是正文内容,第二个是除正文外其他字段的一个数组。返回值是处理后的正文内容。

2 修改内容其他字段的hook,命名为hook_saveitem_123

函数会传入两个参数,第一个是除正文外其他字段的一个数组,第二个是正文内容。返回值是处理后的数组。

转载请注明:本文《如何在AKCMS中HOOK(钩子)执行自己的代码?》链接: http://seo.leidu.net/post-318.html

百度已收录

已有 0/8 人参与

发表评论:

欢迎分享合肥SEO自媒体seo.leidu.net

合肥网站SEO

欢迎使用手机扫描访问本站,还可以关注微信哦~