dedecms织梦tagkeyword怎么调用相关文章

   2025-07-28 admin00100

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

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

推荐学习:织梦cms

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

在\include\taglib\下添加一个liketags.lib.php代码如下

<?phpif(!defined('DEDEINC'))exit('RequestError!');functionlib_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->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.="ANDFIND_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="taglike'".join("'ORtaglike'",$tags)."'";$dsql->Execute('me',"Select*From`dede_tagindex`where$getsql");while($arow=$dsql->GetArray('me')){$tids[]=$arow['id'];}$tid=join(',',$tids);if($tid!=''){061$dsql->Execute("me","SelectaidFrom`dede_taglist`wheretidin($tid)Andarcrank>-1groupbyaidorderbyaiddesc");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";}$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.sitepathfrom`dede_archives`arcleftjoin`dede_arctype`tponarc.typeid=tp.idwherearc.arcrank>-1andarc.idin($idsStr)$typeidorderbyarc.iddesclimit0,$row";}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.sitepathfrom`dede_archives`arcleftjoin`dede_arctype`tponarc.typeid=tp.idwherearc.arcrank>-1and($keyword)$typeid$orderquerylimit0,$row";}else{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.sitepathfrom`dede_archives`arcleftjoin`dede_arctype`tponarc.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'>\r\n";}$dtp2=newDedeTagParse();$dtp2->SetNameSpace('field','[',']');$dtp2->LoadString($innertext);$GLOBALS['autoindex']=0;$line=$row;for($i=0;$i<$line;$i++){if($col>1)$artlist.="<tr>\r\n";for($j=0;$j<$col;$j++){if($col>1)$artlist.="<tdwidth='$colWidth'>\r\n";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']="<ahref='".$row['typeurl']."'>".$row['typename']."</a>";$row['image']="@@##@@<]#","",$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(preg_match('#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()."\r\n";}//ifhasRowelse{$artlist.='';}if($col>1)$artlist.="</td>\r\n";}//LoopColif($col>1)$i+=$col-1;if($col>1)$artlist.="</tr>\r\n";}//looplineif($col>1)$artlist.="</table>\r\n";$dsql->FreeResult("al");return$artlist;}
 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  RSS订阅  |  京ICP备2024057451号-2