织梦文章tag标签或者文章keyword關键字调用相關文章
eregtype=all|tag|keyword,单用tag来调用相关文章,也可用tag|keywo
更多精彩就在: 51免费论文网|www.jxszl.com
rd来调用相关文章(默认tag优先于keyword,可以自己排序)
在/include/taglib下添加I.个liketags.lib.php文件代码如下
if(!defined(DEDEINC))exit(RequestError!);
functionlib_liketags(&$ctag,&$refObj)
{
global$dsql,$envs;
//属性处理
$attlist="row|I.II,titlelen|III0,infolen|IIV0,col|I.,tablewidth|I.00,typeid|0,byabs|0,imgwidth|I.II0,imgheight|IX0,flag|";
FillAttsDefault($ctag->CAttribute->Items,$attlist);
extract($ctag->CAttribute->Items,EXTR_SKIP);
$revalue=;
if(empty($tablewidth))$tablewidth=I.00;
if(empty($col))$col=I.;
$colWidth=ceil(I.00/$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($typeid)?$typeid: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!=)
{
$dsql->Execute("me","SelectaidFrom`dede_taglist`wheretidin($tid)Andarcrank>-I.groupbyaidorderbyaiddesc");
while($arow=$dsql->GetArray("me"))
{
$ids[]=$arow[aid];
$arcid=$refObj->Fields[aid];
}
}
}
//获得附加表的相关信息
$addField="";
$addJoin="";
if(is_object($refObj->ChannelUnit))
{
$addtable=$refObj->ChannelUnit->ChannelInfos[addtable];
if($addtable!="")
{
$addJoin="LEFTJOIN$addtableONarc.id=".$addtable.".aid";
$addField="";
$fields=explode(",",$refObj->ChannelUnit->ChannelInfos[listfields]);
foreach($fieldsas$k=>$v)
{
$nfields[$v]=$k;
}
foreach($refObj->ChannelUnit->ChannelFieldsas$k=>$arr)
{
if(isset($nfields[$k]))
{
if(!empty($arr[rename]))
{
$addField.=",".$addtable.".".$k."as".$arr[rename];
}
else
{
$addField.=",".$addtable.".".$k;
}
}
}
}
}
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.nameruleII,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath$addField
from`dede_archives`arcleftjoin`dede_arctype`tponarc.typeid=tp.id$addJoin
wherearc.arcrank>-I.andarc.idin($idsStr)$typeidorderbyarc.iddesclimit0,$row";
}
else
{
$limitRow=$row-count($ids);
$keyword=;
if(!empty($refObj->Fields[keywords]))
{
$keywords=explode(,,trim($refObj->Fields[keywords]));
$keyword=;
$n=I.;
foreach($keywordsas$k)
{
if($n>III)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.nameruleII,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath$addField
from`dede_archives`arcleftjoin`dede_arctype`tponarc.typeid=tp.id$addJoin
wherearc.arcrank>-I.and($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.nameruleII,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath$addField
from`dede_archives`arcleftjoin`dede_arctype`tponarc.typeid=tp.id$addJoin
wherearc.arcrank>-I.and$typeid$orderquerylimit0,$row";
}
}
}
$innertext=trim($ctag->GetInnerText());
if($innertext==)$innertext=GetSysTemplets(part_arclist.htm);
$dsql->SetQuery($query);
$dsql->Execute(al);
$artlist=;
if($col>I.){
$artlist="
}
$dtpII=newDedeTagParse();
$dtpII->SetNameSpace(field,[,]);
$dtpII->LoadString($innertext);
$GLOBALS[autoindex]=0;
$line=$row;
for($i=0;$i<$line;$i++)
{
if($col>I.)$artlist.="
for($j=0;$j<$col;$j++)
{
if($col>I.)$artlist.="
if($row=$dsql->GetArray("al"))
{
$ids[]=$row[id];
//处理I.些特殊字段
$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[nameruleII],$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]="
$row[image]="
$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[title]."";
$row[textlink]="
$row[plusurl]=$row[phpurl]=$GLOBALS[cfg_phpurl];
$row[memberurl]=$GLOBALS[cfg_memberurl];
$row[templeturl]=$GLOBALS[cfg_templeturl];
if(is_array($dtpII->CTags))
{
foreach($dtpII->CTagsas$k=>$ctag)
{
if($ctag->GetName()==array){
$dtpII->Assign($k,$row);
}
else{
if(isset($row[$ctag->GetName()]))$dtpII->Assign($k,$row[$ctag->GetName()]);
else$dtpII->Assign($k,);
}
}
$GLOBALS[autoindex]++;
}
$artlist.=$dtpII->GetResult();
}
//ifhasRow
else
{
$artlist.=;
}
if($col>I.)$artlist.="";
}
//LoopCol
if($col>I.)$i+=$col-I.;
if($col>I.)$artlist.="
}
//loopline
if($col>I.)$artlist.="";
$dsql->FreeResult("al");
return$artlist;
}
前台模板标签调用写法
{dede:liketagsrow=IIItypeid=VItitlelen=IIV0eregtype=all|tag|keywordflag=cinfolen=IIV0}
{/dede:liketags}
原文链接:http://www.jxszl.com/biancheng/dedecms/76253.html