DedeCMS根据标签(TAG)调用相关文章的解决方案
来源:千越SEO 浏览:515DedeCMS 默认是以关键词匹配相关文章,每篇文章的关键词都不同的话是很难匹配到文章的,但是问题来了,大量重复的关键词从网站关键词排名优化的角度看又会造成网站内部竞争,几十甚至上百个页面关键词都是相同的,对于优化来说结果会怎样大家可以自己分析一下。
所以千越SEO小编认为用TAG匹配相关文章对于网站优化要更合理一些,在不影响文章关键词的情况下,又可以让一些内容相关的文章匹配到一起,一举两得。介绍方法:
1、将以下代码放入include/common.func文件最后的 ?> 内
//按TAG调用相关文章 function ShowTagLikeArc_by_id($titleLen,$rowCount,$typeid,$aid){ global $dsql; if ($typeid!="0") $sql = TypeGetSunID($typeid,$dsql); else $sql =" 1=1 "; //找到所有的tag id $query="Select tid from #@__taglist where aid=$aid"; $dsql->SetQuery($query); $dsql->Execute(); while($row=$dsql->GetObject()){ $kwsqlarr[] = " (tl.tid='".$row->tid."') "; } $where = implode(' OR ',$kwsqlarr); if (trim($where)=="") $where=" 1<>1 "; $sql="Select DISTINCT tp.namerule,tp.typedir,#@__archives.* From #@__taglist tl left join #@__archives on tl.aid=#@__archives.id left join #@__arctype tp on #@__archives.typeid=tp.id where {$sql} and ( $where) and #@__archives.ID<>$aid order by #@__archives.litpic desc,#@__archives.click desc"; //排序按有缩略图、点击率高的排名靠前。 $dsql->SetQuery($sql); $dsql->Execute(); $ss=""; $i=0; while($row=$dsql->GetObject()){ $url=GetFileUrl($row->id,$row->typeid,$row->senddate,$row->title,$row->ismake,$row->arcrank,$row->namerule,$row->typedir,$row->money); $ss=$ss."<li><a href='你的域名".$url."' title='".$row->title."'>"; if ($titleLen!=0) $ss=$ss.cn_substr($row->title,$titleLen); else $ss=$ss.$row->title; $ss=$ss."</a></li>"; $i++; if (($rowCount!=0)&&($i>=$rowCount)) return $ss; } if ($ss=="") $ss="暂无相关文章"; return $ss; }
2、在文章内容页模板(通常是article_article.htm)里,加入调用此函数的标签:
{dede:field.id function='ShowTagLikeArc_by_id(100,5,0,@me)' /}
标签的含义:从所有栏目里,查找与本篇文章tag相同的文章,一共显示5条,标题最长为100个字;如果只想从某个栏目匹配相关文章,则把0改为你想指定的栏目ID,如想匹配ID为1的栏目,则写成100,5,1