AKCMS的二次开发
导航: 返回上一页
AKCMS的二次开发流程:
AKCMS目录结构
注意:本文仅供开发者参考,站长绕行无需关注。AKCMS目录结构:
#cache:存放一些缓存数据,比如getitems如果指定了expire属性,就会作为文件缓存在这里
#data:MySQL版本备份恢复数据的文件存放在这里,SQlite版本的数据文件默认放在这里
#dic:词库在这里
#editor:阉过的所见即所得编辑器FCKeditor在这里
#fore:前端调用的接口程序在这里
#images:图片文件在这里,水印文件也在这个文件夹
#include:公用的一些程序文件
#install:需要复制到根目录的文件存放在这里
#language:语言包
#logs:日志文件存放的地方
#smarty:阉过的smarty相关程序在这里
#templates:后台模板文件夹
#templates/ak:或者是别的前台模板文件夹
#templates_c smarty:模板生成的临时文件在这里
#themes:下载的风格放在这个文件夹里可以导入
#tools:工具程序放在这里
#update:升级程序放在这里
AKCMS二次开发常见问题
如何在AKCMS中的HOOK(钩子)执行自己的代码
本功能为二次开发者设计,站长看不懂不影响正常使用,绕行即可。在二次开发中常常遇到这样的情况,希望自己的代码在页面打开之前有机会执行。比如这种需求:判断是搜索引擎的蜘蛛,就做出一定的动作。这样的代码就需要在页面打开之前执行。
不需要修改AKCMS的代码即可实现这样的功能,不修改AKCMS代码的好处是保持以后升级的时候不需要把修改过的文件,修改过的代码merge到新的版本中,始终保持独立。
AKCMS 2.7以上版本在动态执行时会检查(/plugins/runtime/)中是否有_before.php结尾的文件,如果有就在页面打开之前执行他们。页面打开完毕后检查(/plugins/runtime/)中是否有_after.php结尾的文件,如果有就执行他们。
例如这个需求:把所有动态执行的每一次访问的访问地址都记下日志以便分析。
拷贝以下代码:
error_log($_SERVER['REQUEST_URI']."\n", 3, AK_ROOT.'./logs/log.txt');
?>
保存为/plugins/runtime/log_after.php即可。
注意:生成静态页之后,直接就是HTML文件的显示,当然不能执行任何代码,所以本文所说的功能都是针对AKCMS动态执行时而言。
如何在AKCMS菜单中增加项目
网站维护中经常有一些常用的网址,可以放到浏览器的收藏夹,缺点是换一台电脑这些网址就找不到了,AKCMS 2.7开始,允许您自己将常用网址自己增加到菜单中。您可以按照这样的格式写一个文件:
搜狐,http://www.sohu.com
百度,http://www.baidu.com
保存为:/plugins/menu.lst

利用AKCMS的公用函数编写单独的PHP程序
只要包含/akcms/include/common.inc.php即可引用AKCMS的公用函数。引用之后会初始化一系列变量供后面的程序使用:- $os:操作系统(windows或linux)
- $lr:不同操作系统下默认的换行符
- $__dbtype:数据库类型(mysql或sqlite)
- $__callmode:调用类型(web或command)
- $onlineip:IP地址
- $thetime:程序开始执行时的时间戳
- $db:数据库对象(创建数据库链接需要时间,如果程序中不需要数据库查询,为节省时间,可以在引用common.inc.php之前初始化一个$nodb = 1;即可)
- $systemurl:系统地址
- $homepage:首页地址
当服务器配置自动为GET、POST等注册全局变量时,common.in.php会unset掉这些全局变量。
可使用的功能函数
:debug($variable, $exit = 0, $type=0);//输出一个变量的内容,当第二个参数不为空则exit,$type决定了输出的类型,默认0是虚线框显示;1是alert弹出来;2 也是alert,不过前后不加