dedecms 添加自定义标签显示非dede表数据
需求:调用一个商城系统里面的产品数据到dedecms文章页,希望对需要类似需求的人有所帮助
功能实现:为了不用垮数据库查询,dedecms安装到商城系统数据库里面
下面是实现的代码(请根据自己的环境进行修改)
include/taglib/hongyungoods.lib.php
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
<?php/** * @author http://blog.runphp.net/ */if(!defined('DEDEINC')) exit('Request Error!');function lib_hongyungoods(&$ctag, &$refObj){ global $dsql, $envs, $cfg_cmsurl; //属性处理 $attlist="row|6,titlelen|0,tid|0"; FillAttsDefault($ctag->CAttribute->Items,$attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); //只在指定栏目显示 if($tid>0 && $tid != $envs['typeid']) return ''; if( !$dsql->IsTable("sl_products") ) return '没安装鸿运产品模块'; $innertext = $ctag->GetInnerText(); //@todo hongyungoods.htm if(trim($innertext)=='') $innertext = GetSysTemplets("hongyungoods.htm"); //@todo 智能条件 $where = 1; $limit = 5; $ctp = new DedeTagParse(); $ctp->SetNameSpace('field', '[', ']'); $ret = ''; $query = "SELECT p.`Name` AS title, FROM `sl_products` AS p LEFT JOIN `sl_products_sort` AS ps ON p.`SID` = ps.`ID` WHERE " . $where . " ORDER BY RAND() LIMIT " . $limit; $dsql->Execute('me',$query); while($rs = $dsql->GetArray('me')) { $rs['title'] = 0 == $titlelen?$rs['title']:cn_substr($rs['title'], $titlelen); $ctp->LoadSource($innertext); foreach($ctp->CTags as $tagid=>$ctag) { if(!empty($rs[strtolower($ctag->GetName())])) { $ctp->Assign($tagid,$rs[$ctag->GetName()]); } } $ret .= $ctp->GetResult(); } return $ret;}?> |
调用页面使用:
|
1
2
3
4
5
6
|
{dede:hongyungoods}<dd> <span class="tlink"><a href="[field:url/]"><img src="[field:img/]" alt="[field:title/]"/></a> <a href="[field:url/]" target="_blank">[field:title/]</a></span></dd>{/dede:hongyungoods}
|
浙公网安备 33010602011771号