加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > CMS系统 > Dedecms > 正文

dedecms织梦tag+keyword调用相关文章

发布时间:2020-12-14 04:50:52 所属栏目:Dedecms 来源:网络整理
导读:官方的dede:likearticle并没有那么精准的输出相关文章,下面我们自定义一个类库文件来实现精准获取相关文章 单用tag来调用相关文章,也可用tag+keyword来调用相关文章(默认tag优先于keyword,可以自己排序)非常适合SEO 在?includetaglib?下添加一个liketa

官方的dede:likearticle并没有那么精准的输出相关文章,下面我们自定义一个类库文件来实现精准获取相关文章

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

在?includetaglib?下添加一个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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
????global?$dsql;
?????
????//属性处理
????$attlist="row|12,titlelen|30,infolen|250,col|1,tablewidth|100,mytypeid|0,byabs|0,imgwidth|120,imgheight|90,flag|";
????FillAttsDefault($ctag->CAttribute->Items,$attlist);
????extract($ctag->CAttribute->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)>0?";
????}
?????
????$ids?=?array();
????$tids?=?array();
?????
????if(!empty($refObj->Fields['tags']))?{
????????$keyword?=?$refObj->Fields['tags'];
????}
????else?{
????????$keyword?=?(?!empty($refObj->Fields['keywords'])???$refObj->Fields['keywords']?:?''?);
????}
?????
????$typeid?=?(?!empty($mytypeid)???$mytypeid?:?0?);
????if(empty($typeid))
????{
????????if(!empty($refObj->Typelink->TypeInfos['reid']))?{
?????????????$typeid?=?$refObj->Typelink->TypeInfos['reid'];
????????}
????????else?{
?????????????if(!empty($refObj->Fields['typeid']))?$typeid?=?$refObj->Fields['typeid'];
????????}
????}
?????
????if(?!empty($typeid)?&&?!preg_match('#,#',?$typeid)?)?{
????????$typeid?=?GetSonIds($typeid);
????}
?????
????if(!empty($refObj->Fields['tags'])?&&?$eregtype?!=?'keyword'?)?
????{
????????$tags?=?explode(',?addslashes($refObj->Fields['tags']));
????????$getsql?=?"?tag?like?'".join("'?OR?tag?like?'",?$tags)."'?";
????????$dsql->Execute('me',?"Select?*?From?`dede_tagindex`?where?$getsql?");
????????while($arow?=?$dsql->GetArray('me'))
????????{
????????????$tids[]?=?$arow['id'];
????????}
????????$tid?=?join(',?$tids);
????????if($tid!='')
????????{
????????????$dsql->Execute("me",?"Select?aid?From?`dede_taglist`?where?tid?in($tid)?And?arcrank?>?-1?group?by?aid?order?by?aid?desc");
????????????while($arow?=?$dsql->GetArray("me"))
????????????{
????????????????$ids[]?=?$arow['aid'];
????????????????$arcid?=??$refObj->Fields['aid'];
????????????}
????????}?
????}
????if($eregtype?==?'tag'?&&?count($ids)?==?0?)
????{
????????return;
????}
????else
????{
????????if(count($ids)?>?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.id?in($idsStr)?$typeid?order?by?arc.id?desc?limit?0,?$row";
????????}
????????else
????????{
????????????$limitRow?=?$row?-?count($ids);?
????????????$keyword?=?'';?
????????????if(!empty($refObj->Fields['keywords']))
????????????{
????????????????$keywords?=?explode(','?,?trim($refObj->Fields['keywords']));
????????????????$keyword?=?'';
????????????????$n?=?1;
????????????????foreach($keywords?as?$k)
????????????????{
????????????????????if($n?>?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->Fields['id'])???$refObj->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.namerule2,tp.sitepath?
????????????????from?`dede_archives`?arc?left?join?`dede_arctype`?tp?on?arc.typeid=tp.id?
????????????????where?arc.arcrank>-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.sitepath?
????????????????from?`dede_archives`?arc?left?join?`dede_arctype`?tp?on?arc.typeid=tp.id?
????????????????where?arc.arcrank>-1?and??$typeid?$orderquery?limit?0,?$row";?
????????????}
????????}??
????}
?
????$innertext?=?trim(?$ctag->GetInnerText()?);
????if($innertext=='')?$innertext?=?GetSysTemplets('part_arclist.htm');
????$dsql->SetQuery($query);
????$dsql->Execute('al');
????$artlist?=?'';
????if($col?>?1){
????????$artlist?=?"
????}
????$dtp2?=?new?DedeTagParse();
????$dtp2->SetNameSpace('field',?'[',?']');
????$dtp2->LoadString($innertext);
????$GLOBALS['autoindex']?=?0;
????$line?=?$row;
????for($i=0;?$i?
????{
????????if($col>1)?$artlist?.=?"
????????for($j=0;?$j?
????????{
????????????if($col>1)?$artlist?.=?"????
????????????if($row?=?$dsql->GetArray("al"))
????????????{
????????????????$ids[]?=?$row['id'];
????????????????//处理一些特殊字段?www.dede58.com织梦模板
????????????????$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['isdefault'],$row['defaultname'],$row['ispart'],
????????????????$row['namerule2'],$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['image']?=?"
????????????????$row['imglink']?=?"
????????????????$row['fulltitle']?=?$row['title'];
????????????????$row['title']?=?cn_substr($row['title'],?$titlelen);
????????????????if($row['color']!='')?$row['title']?=?"
????????????????if(preg_match('#b#',?$row['flag']))?$row['title']?=?"
????????????????$row['textlink']?=?"
????????????????$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()."rn";
????????????}
????????????//if?hasRow
????????????else
????????????{
????????????????$artlist?.=?'';
????????????}
????????????if($col>1)?$artlist?.=?"????
????????}
????????//Loop?Col
????????if($col>1)?$i?+=?$col?-?1;
????????if($col>1)?$artlist?.=?"????
????}
????//loop?line
????if($col>1)?$artlist?.=?"????
????$dsql->FreeResult("al");
????return?$artlist;}

?

?

前台模板调用

1
2
3
4
5
6
7
8
9
10
11
12
13
{dede:liketags?row='3'?mytypeid='6'?eregtype='all|tag|keyword'?titlelen='250'?infolen='250'}
{/dede:liketags}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读