电脑乐园提供网站建设,服务器,域名等互联网资讯服务

返回首页 微信
微信
手机版
手机版

getitems增加字段的hook

2019-08-18 新闻来源:电脑乐园 围观:1074
电脑广告
手机广告
_plkcFN">

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


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


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


模版内容是:

<{getitemstemplate="[title]<br/>"}>

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


下面我们修改模版为:

<{getitemstemplate="[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!';
}
?>

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

文章底部电脑广告
手机广告位-内容正文底部

相关文章

  • 为变量赋值模版标签assign
    为变量赋值模版标签assign

    6.1中新增了模版标签assign,assign的作用是定义变量,用法非常简单,通过几个例子就完全清楚了。 以下定义了一个叫num的变量,内容是20: <{assignnum...

    2019-08-18
  • 模板函数getcategories
    模板函数getcategories

    参数 id 指定的栏目ID skipid 跳过的栏目ID,支持多个 skipsub 只获取一级栏目 path 栏目路径 module 所属模块ID(5.3.6新增) rootcategory 父栏...

    2019-08-18
  • 在模版中灵活处理变量的4种方法
    在模版中灵活处理变量的4种方法

    _COlD5U"˃本文是关于二次开发的高级用法,普通站长请绕行,以免烧脑子。在模版中显示变量(假设变量名是$var)最通常的写法是:<{$var}>但有时我们不想直接显示,而是对变量做一些...

    2019-08-18
  • 模版标签中使用PHP函数
    模版标签中使用PHP函数

    _dVxE7h"˃实例:为了测试效果,请先录入两篇文章,题目分别是:《hello,world》和《abcdefg》现在我们要把两个题目调用出来,最基础的用法对吧?<{getitems templ...

    2019-08-18
  • 模版标签中使用过滤器
    模版标签中使用过滤器

    _hMdUjT"˃实例:为了测试效果,请先录入两篇文章,题目分别是:《hello,world》和《abcdefg》现在我们要把两个题目调用出来,最基础的用法对吧?<{getitems templ...

    2019-08-18
  • ak_if的安全替代品ak_ifnotempty
    ak_if的安全替代品ak_ifnotempty

    _dmGBEO"˃ak_if强大而灵活,但如果运用不当也会造成安全隐患。大多数情况下我们不需要这么灵活,只需要一个简单可靠又安全稳定的判断变量是否为空,ak_ifnotempty就是干这个事的。大多数...

    2019-08-18
  • 自定义后台
    自定义后台

    _vNbZG3"˃在configs文件夹下面新建一个xml文件,文件名为:custom.menu.xml(文件名必须写成这个样子,这是系统要求的格式)。示例文件内容如下所示:<?xml vers...

    2019-08-18
  • 过滤器支持数组具体实例
    过滤器支持数组具体实例

    _1qD8ko"˃从AKCMS4.1.8起,过滤器支持数组,下面从一个采集的实例入手讲一下这个功能是干嘛的在采集数据时,一篇文章不仅有题目、作者、内容等一对一的数据,还有下载地址、关键词等一对多的数据...

    2019-08-18
  • 模板中如何用过滤器处理一个变量
    模板中如何用过滤器处理一个变量

    _g0hkOt"˃假设在正文模板中有一个变量$title要输出之前要通过过滤器处理,用如下的办法调用:<{akecho source=$title filter="123"}...

    2019-08-18