找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 794|回复: 0

织梦DEDECMS网站的dede标签调用自定义字段

[复制链接]
发表于 2012-5-4 16:31:18 | 显示全部楼层 |阅读模式
我们在使用织梦模板做网站的时候是否遇到过想调用某些自定义字段,却发现dedecms的标签底层模板字段不包括这个字段呢?这就大大限制了灵活性,但dede也不可能让所有字段都允许调用的,那样就会大大降低系统效率,所以今天分享的是一个比较完美解决这个问题的方法,配合dede标签,几乎可以说没有什么不能调用的了。


     function table($table, $field, $id)
     {
         global $dsql;
         $primarys = array();
         $table = strpos($table, '#@_') === false?(strpos($table, 'dede_') === false?'dede_'.$table:str_replace('dede_','dede_',$table))table;
     
                                    
              $dsql -> Execute("me","SHOW COLUMNS FROM `$table`");   
         while ($r = $dsql->GetArray())
         {
             if($r['Key'] == 'PRI') $primarys[] = $r['Field'];
         }
     
                                    
              if(!empty($primarys))
         {
             $primary = $primarys[0];
             $result = $dsql -> GetOne("SELECT `$field` FROM `$table` WHERE `$primary`= $id");
         }
     
                                    
              return isset($result[$field])?$result[$field]:'';   
     }



首先把上面代码放到 include/extend.func.php 里,如果没有这个文件就自己建立一个,现在的5.6 ,5.7版本的dede模板都有的。

然后我们就可以在模板里任意使用了。

使用方法:

利用自定义函数对标签进行扩展
如:
{dede:标记 function='table("要调用的表名","要调用的字段",@me)'/}
这里的“标记”就是要调用的表的主键的值,常见的就是id和aid、mid、uid之类的
标签底层模板内
[field:字段 function=table(“要调用的表名","要调用的字段",@me)/]

举例
例如arclist标签底层模板字段是没有body字段的,就是说不能用arclist把文章内容调用出来的,当然这种需求很少,但不是没有,现在我们就可以这样使用
{dede:arclist row='10' titlelen='24'}
[field:id function=table('addonarticle','body',@me)/]
{/dede:arclist}

呵呵!试试咯。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|要学吧论坛

GMT+8, 2026-1-24 06:40 , Processed in 0.036143 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表