需求:调用一个商城系统里面的产品数据到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}
|