织梦如何实现全站按TAG和关键字调用相关文章好代码教程

在岁月中跋涉,每个人都有自己的故事,看淡心境才会秀丽,看开心情才会明媚。累时歇一歇,随清风漫舞,烦时静一静,与花草凝眸,急时缓一缓,和自己微笑。

织梦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><arel="nofollow noopener noreferrer" href="[field:arcurl/]">[field:title/]</a></li>
{/dede:likearticle}
</ul>
</dd>
</dl>
</div>

2.把下边的php代码替换掉include/taglib/likearticle.lib里的代码

<?php
if(!defined('DEDEINC'))exit('RequestError!');
/*--------------------------------------
按关键词关连文章的标签
eregtype属性
eregtype=keyword只匹配关键字
eregtype=tag只匹配tag
eregtype=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.sitepath
fromzmb_archivesarcleftjoinzmb_arctypetponarc.typeid=tp.id
wherearc.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.sitepath
fromzmb_archivesarcleftjoinzmb_arctypetponarc.typeid=tp.id
wherearc.arcrank>-1and($keyword)$typeid$orderquerylimit0,$row";
}
//http://www.dede58.com
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.sitepath
fromzmb_archivesarcleftjoinzmb_arctypetponarc.typeid=tp.id
wherearc.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['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']="<arel="nofollow noopener noreferrer" href='".$row['typeurl']."'>".$row['typename']."</a>";
$row['image']="<imgsrc='".$row['picname']."'border='0'width='$imgwidth'height='$imgheight'alt='".ereg_replace("['><]","",$row['title'])."'>";
$row['imglink']="<arel="nofollow noopener noreferrer" href='".$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']="<arel="nofollow noopener noreferrer" href='".$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";
}
//ifhasRow
else
{
$artlist.='';
}
if($col>1)$artlist.="</td>\r\n";
}
//LoopCol
if($col>1)$i+=$col-1;
if($col>1)$artlist.="</tr>\r\n";
}
//loopline
if($col>1)$artlist.="</table>\r\n";
$dsql->FreeResult("al");
return$artlist;
}
?>

本文织梦如何实现全站按TAG和关键字调用相关文章好代码教程到此结束。平凡人生要用平凡的心去对待,你的人生将会更精彩。小编再次感谢大家对我们的支持!

您可能有感兴趣的文章
织梦后台文档列表添加复制文档功能支持所有模型

织梦无法上传ico图标格式文件的如何解决方法

dedecms如何实现任意页面调用当前会员信息的方

织梦dede:tag调用指定多个栏目的TAG标签

织梦栏目列表按附加表自定义字段排序