dedecms织梦tag keyword怎么调用相关文章

来源:undefined 2025-01-01 12:21:14 1047

dedecms织梦tag keyword怎么调用相关文章?

DEDE官方的dede:likearticle是利用文章中输入的关键词或者自动分词形成的关键词来关联文章,但是有时候自动生成的关键词并不精确,造成关联不准,这里我们通过自定义一个类库文件来实现精准获取相关文章

推荐学习:织梦cms

可以单用tag来调用相关文章,也可用tag+keyword来调用相关文章(默认tag优先于keyword,可以自己排序)

在 include aglib 下添加一个liketags.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

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

<?php if(!defined(&#39;DEDEINC&#39;)) exit(&#39;Request Error!&#39;);

function lib_liketags(&$ctag,&$refObj)

{

global $dsql;

//属性处理

$attlist="row|12,titlelen|30,infolen|250,col|1,tablewidth|100,mytypeid|0,byabs|0,imgwidth|1,imgheight|90,flag|";

FillAttsDefault($ctag->CAttribute-&gt;Items,$attlist);

extract($ctag-&gt;CAttribute-&gt;Items, EXTR_SKIP);

$revalue = ;

if(empty($tablewidth)) $tablewidth = 100;

if(empty($col)) $col = 1;

$colWidth = ceil(100/$col);

$tablewidth = $tablewidth."%";

$colWidth = $colWidth."%";

$orwheres = ;

if($flag != ) {

$flags = explode(,, $flag);

for($i=0; isset($flags[$i]); $i++) $orwheres .= " AND FIND_IN_SET({$flags[$i]}, arc.flag)&gt;0 ";

}

$ids = array();

$tids = array();

if(!empty($refObj-&gt;Fields[tags])) {

$keyword = $refObj-&gt;Fields[tags];

}

else {

$keyword = ( !empty($refObj-&gt;Fields[keywords]) ? $refObj-&gt;Fields[keywords] :  );

}

$typeid = ( !empty($mytypeid) ? $mytypeid : 0 );

if(empty($typeid))

{

if(!empty($refObj-&gt;Typelink-&gt;TypeInfos[reid])) {

$typeid = $refObj-&gt;Typelink-&gt;TypeInfos[reid];

}

else {

if(!empty($refObj-&gt;Fields[typeid])) $typeid = $refObj-&gt;Fields[typeid];

}

}

if( !empty($typeid) &amp;&amp; !preg_match(#,#, $typeid) ) {

$typeid = GetSonIds($typeid);

}

if(!empty($refObj-&gt;Fields[tags]) &amp;&amp; $eregtype != keyword )

{

$tags = explode(,, addslashes($refObj-&gt;Fields[tags]));

$getsql = " tag like ".join(" OR tag like ", $tags)." ";

$dsql-&gt;Execute(me, "Select * From `dede_tagindex` where $getsql ");

while($arow = $dsql-&gt;GetArray(me))

{

$tids[] = $arow[id];

}

$tid = join(,, $tids);

if($tid!=)

{

061

$dsql-&gt;Execute("me", "Select aid From `dede_taglist` where tid in($tid) And arcrank &gt; -1 group by aid order by aid desc");

while($arow = $dsql-&gt;GetArray("me"))

{

$ids[] = $arow[aid];

$arcid =  $refObj-&gt;Fields[aid];

}

}

}

if($eregtype == tag &amp;&amp; count($ids) == 0 )

{

return;

}

else

{

if(count($ids) &gt; 0)

{

if(!empty($typeid))

{

$typeid = " And arc.typeid in($typeid) And arc.id$arcid ";

}

$idsStr = join(,, $ids);

$query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,

tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath

from `dede_archives` arc left join `dede_arctype` tp on arc.typeid=tp.id

where arc.arcrank&gt;-1 and arc.id in($idsStr) $typeid order by arc.id desc limit 0, $row";

}

else

{

$limitRow = $row - count($ids);

$keyword = ;

if(!empty($refObj-&gt;Fields[keywords]))

{

$keywords = explode(, , trim($refObj-&gt;Fields[keywords]));

$keyword = ;

$n = 1;

foreach($keywords as $k)

{

if($n &gt; 3)  break;

if(trim($k)==) continue;

else $k = addslashes($k);

$keyword .= ($keyword== ? " CONCAT(arc.keywords, ,arc.title) like %$k% " : " OR CONCAT(arc.keywords, ,arc.title) like %$k% ");

$n++;

}

}

$arcid = (!empty($refObj-&gt;Fields[id]) ? $refObj-&gt;Fields[aid] : 0);

if( empty($arcid) || $byabs==0 )

{

$orderquery = " order by arc.id desc ";

}

else

{

$orderquery = " order by ABS(arc.id - ".$arcid.") ";

}

if($keyword != )

{

if(!empty($typeid))

{

$typeid = " And arc.typeid in($typeid) And arc.id$arcid ";

}

$query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,

tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath

from `dede_archives` arc left join `dede_arctype` tp on arc.typeid=tp.id

where arc.arcrank&gt;-1 and ($keyword)  $typeid $orderquery limit 0, $row";

}

else

{

if(!empty($typeid))

{

$typeid = " arc.typeid in($typeid) And arc.id$arcid ";

}

$query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,

tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath

from `dede_archives` arc left join `dede_arctype` tp on arc.typeid=tp.id

where arc.arcrank&gt;-1 and  $typeid $orderquery limit 0, $row";

}

}

}

$innertext = trim( $ctag-&gt;GetInnerText() );

if($innertext==) $innertext = GetSysTemplets(part_arclist.htm);

$dsql-&gt;SetQuery($query);

$dsql-&gt;Execute(al);

$artlist = ;

if($col &gt; 1){

$artlist = "

登录后复制
";     }     $dtp2 = new DedeTagParse();     $dtp2->SetNameSpace(field, [, ]);     $dtp2->LoadString($innertext);     $GLOBALS[autoindex] = 0;     $line = $row;     for($i=0; $i 1) $artlist .= " ";         for($j=0; $j 1) $artlist .= "     ";         }         //Loop Col         if($col>1) $i += $col - 1;         if($col>1) $artlist .= "     ";     }     //loop line     if($col>1) $artlist .= "     ";             if($row = $dsql->GetArray("al"))             {                 $ids[] = $row[id];                 //处理一些特殊字段                 $row[info] = $row[infos] = cn_substr($row[description],$infolen);                 $row[id] =  $row[id];                    if($row[corank] > 0 && $row[arcrank]==0)                 {                     $row[arcrank] = $row[corank];                 }                    $row[filename] = $row[arcurl] = GetFileUrl($row[id],$row[typeid],$row[senddate],$row[title],$row[ismake],                 $row[arcrank],$row[namerule],$row[typedir],$row[money],$row[filename],$row[moresite],$row[siteurl],$row[sitepath]);                    $row[typeurl] = GetTypeUrl($row[typeid],$row[typedir],$row[isdefault],$row[defaultname],$row[ispart],                 $row[namerule],$row[moresite],$row[siteurl],$row[sitepath]);                    if($row[litpic] == - || $row[litpic] == )                 {                     $row[litpic] = $GLOBALS[cfg_cmspath]./images/defaultpic.gif;                 }                 if(!preg_match("#^http://#i", $row[litpic]) && $GLOBALS[cfg_multi_site] == Y)                 {                     $row[litpic] = $GLOBALS[cfg_mainsite].$row[litpic];                 }                 $row[picname] = $row[litpic];                 $row[stime] = GetDateMK($row[pubdate]);                 $row[typelink] = "".$row[typename]."";                 $row[image] = "@@##@@";                 $row[imglink] = "".$row[image]."";                 $row[fulltitle] = $row[title];                 $row[title] = cn_substr($row[title], $titlelen);                 if($row[color]!=) $row[title] = "".$row[title]."";                 if(preg_match(#b#, $row[flag])) $row[title] = "".$row[title]."";                 $row[textlink] = "".$row[title]."";                 $row[plusurl] = $row[phpurl] = $GLOBALS[cfg_phpurl];                 $row[memberurl] = $GLOBALS[cfg_memberurl];                 $row[templeturl] = $GLOBALS[cfg_templeturl];                                    if(is_array($dtp2->CTags))                 {                     foreach($dtp2->CTags as $k=>$ctag)                     {                         if($ctag->GetName()==array) {                             $dtp2->Assign($k,$row);                         }                         else {                             if(isset($row[$ctag->GetName()])) $dtp2->Assign($k,$row[$ctag->GetName()]);                             else $dtp2->Assign($k,);                         }                     }                     $GLOBALS[autoindex]++;                 }                    $artlist .= $dtp2->GetResult()." ";             }             //if hasRow             else             {                 $artlist .= ;             }             if($col>1) $artlist .= "     ";     $dsql->FreeResult("al");     return $artlist; }

前台模板调用

1

{dede:liketags row=3 mytypeid=6 eregtype=all|tag|keyword titlelen=250 infolen=250}

登录后复制
@@##@@

[field:title/]

[field:description /]

{/dede:liketags}

以上就是dedecms织梦tag keyword怎么调用相关文章的详细内容,更多请关注php中文网其它相关文章!

最新文章