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

getitems增加字段的hook

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

getitems调用数据时提供了丰富的字段,还有过滤器等机制可以对字段内容进行截断等简单的处理。但有时候,需求更加复杂比如从其他关联表中获取数据在getitems新增一个字段输出。


akcms的getitems处理字段hook可以满足这个需求(需要内核6.1+),下面我从易到难说明一下如何给getitems增加一个test字段:


首先录入一些测试数据,然后新建一个测试页面使用测试模版调出这些数据。


模版内容是:

<{getitems template="[title]<br />"}>

一切顺利的话,会显示10条测试内容的题目。


下面我们修改模版为:

<{getitems template="[title] [test]<br />"}>

直接刷新页面会发现每一行的结尾都多了一个[test],这说明不存在test这个字段,所以直接输出了,下面我们就让[test]变成hello,world!


首先创建一个应用(如何创建应用?),确保应用的目录中有一个子目录叫hook,然后在其中新建一个文件叫:getitemsfield.php,在这个文件中进行输出前的数据组装,系统已经组装好一个$return数组待输出


下面我们写一个最简单的例子:

<?php
$return['test'] = 'hello,world!';
?>

然后更新缓存再在前台刷新页面,就会发现每行的结尾处的[test]变成了hello,world!了。


这只是一个演示,既然能把[test]赋值为hello,world!,就能从关联数据表获取内容,也能从第三方数据源获取内容,这个根据自己的需求灵活运用。


下面这个例子稍微复杂一些,假设二次开发时新建了一个test_table的关联表其中有个test_field字段,用数据的ID($return['itemid'])通过关联表取数据:

<?php
$test = $db->get_by('test_field', 'test_table', "itemid='{$return['itemid']}'");
$return['test'] = $test;
?>

增加字段、从第三方数据源获取内容会拖慢速度,建议尽量将hook限定在一个范围内,比如:只为某个栏目的数据源增加字段。

<?php
if($return['categoryid'] == 1) {
	$return['test'] = 'hello,world!';
}
?>

以上的例子都是新增字段,其实修改既有字段的内容也是一样的道理,二次开发时可以灵活运用。

转载请注明:本文《getitems增加字段的hook》链接: http://seo.leidu.net/post-334.html

百度已收录

已有 0/5 人参与

发表评论:

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

合肥网站SEO

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