时间:2021-07-21人气:-
织梦DedeCms5.7全站按TAG和关键字调用相关文章方法,可单用tag来调用相关文章,也可用tag+keyword来调用相关文章(默认tag优先于keyword,可以自己排序),非常适合SEO,经测试效果极佳。
1.把下边代码保存到文章模版的适当位置
<divclass="xgwz"><dlclass="tbox"><dt><strong>相关文章</strong></dt><dd><ulclass="c1ico2">{dede:likearticlecol='2'row='10'titlelen='42'eregtype=all|tag|keyword}<li><ahref="[field:arcurl/]">[field:title/]</a></li>{/dede:likearticle}</ul></dd></dl></div>
2.把下边的php代码替换掉include/taglib/likearticle.lib里的代码
<?phpif(!defined('DEDEINC'))exit('RequestError!');/*--------------------------------------按关键词关连文章的标签eregtype属性eregtype=keyword只匹配关键字eregtype=tag只匹配tageregtype=alltag优先,不存在tag则匹配关键字mytypeid=''栏目ID,多个栏目用,隔开---------------------------------------*/functionlib_likearticle(&$ctag,&$refObj){global$dsql;//属性处理来源:http://www.dede58.com$attlist="row|12,titlelen|28,infolen|150,col|1,tablewidth|100,mytypeid|0,byabs|0,imgwidth|120,imgheight|90";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."%";$ids=array();$tids=array();$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)&&!ereg(',',$typeid)){$typeid=GetSonIds($typeid);}if(!empty($refObj->Fields['tags'])&&$eregtype!='keyword'){$tags=explode(',',addslashes($refObj->Fields['tags']));$getsql="taglike'".join("'ORtaglike'",$tags)."'";$dsql->Execute('me',"Select*Fromzmb_tagindexwhere$getsql");while($arow=$dsql->GetArray('me')){$tids[]=$arow['id'];}$tid=join(',',$tids);if($tid!=''){$dsql->Execute("me","SelectaidFromzmb_taglistwheretidin($tid)Andarcrank>-1groupbyaidorderbyaiddesclimit0,$row");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="Andarc.typeidin($typeid)Andarc.id<>$arcid";调用整站相关文章$typeid="Andarc.id<>$arcid";}$idsStr=join(',',$ids);$query="Selectarc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepathfromzmb_archivesarcleftjoinzmb_arctypetponarc.typeid=tp.idwherearc.idin($idsStr)$typeidorderbyarc.iddesc";}else{$limitRow=$row-count($ids);$keyword='';if(!empty($refObj->Fields['keywords'])){$keywords=explode(',',trim($refObj->Fields['keywords']));$keyword='';$n=1;foreach($keywordsas$k){if($n>3)break;if(trim($k)=='')continue;else$k=addslashes($k);$keyword.=($keyword==''?"CONCAT(arc.keywords,'',arc.title)like'%$k%'":"ORCONCAT(arc.keywords,'',arc.title)like'%$k%'");$n++;}}$arcid=(!empty($refObj->Fields['id'])?$refObj->Fields['aid']:0);if(empty($arcid)||$byabs==0){$orderquery="orderbyarc.iddesc";}else{$orderquery="orderbyABS(arc.id-".$arcid.")";}if($keyword!=''){if(!empty($typeid)){$typeid="Andarc.typeidin($typeid)Andarc.id<>$arcid";}$query="Selectarc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepathfromzmb_archivesarcleftjoinzmb_arctypetponarc.typeid=tp.idwherearc.arcrank>-1and($keyword)$typeid$orderquerylimit0,$row";}//http://www.dede58.comelse{if(!empty($typeid)){$typeid="arc.typeidin($typeid)Andarc.id<>$arcid";}$query="Selectarc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepathfromzmb_archivesarcleftjoinzmb_arctypetponarc.typeid=tp.idwherearc.arcrank>-1and$typeid$orderquerylimit0,$row";}}}$innertext=trim($ctag->GetInnerText());if($innertext=='')$innertext=GetSysTemplets('part_arclist.htm');$dsql->SetQuery($query);$dsql->Execute('al');$artlist='';if($col>1){$artlist="<tablewidth='$tablewidth'border='0'cellspacing='0'cellpadding='0'>rn";}$dtp2=newDedeTagParse();$dtp2->SetNameSpace('field','[',']');$dtp2->LoadString($innertext);$GLOBALS['autoindex']=0;$line=$row;for($i=0;$i<$line;$i++){if($col>1)$artlist.="<tr>rn";for($j=0;$j<$col;$j++){if($col>1)$artlist.="<tdwidth='$colWidth'>rn";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['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);if($row['litpic']=='-'||$row['litpic']==''){$row['litpic']=$GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';}if(!eregi("^http://",$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']="<ahref='".$row['typeurl']."'>".$row['typename']."</a>";$row['image']="<imgsrc='".$row['picname']."'border='0'width='$imgwidth'height='$imgheight'alt='".ereg_replace("['><]","",$row['title'])."'>";$row['imglink']="<ahref='".$row['filename']."'>".$row['image']."</a>";$row['fulltitle']=$row['title'];$row['title']=cn_substr($row['title'],$titlelen);if($row['color']!='')$row['title']="<fontcolor='".$row['color']."'>".$row['title']."</font>";if(ereg('b',$row['flag']))$row['title']="<strong>".$row['title']."</strong>";$row['textlink']="<ahref='".$row['filename']."'>".$row['title']."</a>";$row['plusurl']=$row['phpurl']=$GLOBALS['cfg_phpurl'];$row['memberurl']=$GLOBALS['cfg_memberurl'];$row['templeturl']=$GLOBALS['cfg_templeturl'];if(is_array($dtp2->CTags)){foreach($dtp2->CTagsas$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";}//ifhasRowelse{$artlist.='';}if($col>1)$artlist.="</td>rn";}//LoopColif($col>1)$i+=$col-1;if($col>1)$artlist.="</tr>rn";}//looplineif($col>1)$artlist.="</table>rn";$dsql->FreeResult("al");return$artlist;}?>