• 售前

  • 售后

热门帖子
入门百科

详解自己动手添加一个函数实现任意字段调用

[复制链接]
心随674 显示全部楼层 发表于 2021-8-19 15:29:43 |阅读模式 打印 上一主题 下一主题
是否碰到过想调用某些自定义字段,却发现dedecms的标签底层模板字段不包括这个字段呢?这就大大限制了机动性,但dede也不大概让所有字段都允许调用的,那样就会大大低沉系统服从,以是今天禀享的是一个比力完善办理这个问题的方法,共同dede标签,险些可以说没有什么不能调用的了。
先上代码
  1. function table($table, $field, $id)
  2. {
  3.     global $dsql;
  4.     $primarys = array();
  5.     $table = strpos($table, '#@_') === false?(strpos($table, 'dede_') ===false?''.$table:str_replace('dede_','',$table)):$table;
  6.     $dsql -> Execute("me","SHOW COLUMNS FROM `$table`");   
  7.     while ($r = $dsql->GetArray())
  8.     {
  9.         if($r['Key'] == 'PRI') $primarys[] = $r['Field'];
  10.     }
  11.     if(!empty($primarys))
  12.     {
  13.         $primary = $primarys[0];
  14.         $result = $dsql -> GetOne("SELECT `$field` FROM `$table` WHERE `$primary`= $id");
  15.     }
  16.     return isset($result[$field])?$result[$field]:'';   
  17. }
复制代码
起首把上面代码放到 include/extend.func.php 里,如果没有这个文件就自己创建一个(放到 ?> 前面哦)
然后我们就可以在模板里恣意利用了。
利用方法:
利用自定义函数对标签进行扩展
如:
  1. {dede:标记 function='table("要调用的表名","要调用的字段",@me)'/}
复制代码
这里的“标记”就是要调用的表的主键的值,常见的就是id和aid、mid、uid之类的
标签底层模板内
  1. [field:字段 function=table(“要调用的表名","要调用的字段",@me)/]
复制代码
举例

比方arclist标签底层模板字段是没有body字段的,就是说不能用arclist把文章内容调用出来的,当然这种需求很少,但不是没有,现在我们就可以这样利用
  1. {dede:arclist row='10' titlelen='24'}
  2. [field:id function=table('addonarticle','body',@me)/]
  3. {/dede:arclist}
复制代码
另有许多作用,如type标签调用栏目简介,等等,自己去挖掘吧。
以上就是本文的全部内容,希望对各人的学习有所资助,也希望各人多多支持草根技术分享。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作