给大家分享下根据文章的Tag标签来调用相关文章的自定义标签,在手动填写Tag标签的情况下,效果还是非常不错的。先说一下如何给织梦系统增加自定义标签,只需要把自定义标签文件上传到\include\taglib目录即可。
下面是根据Tag标签获取相关文章的自定义dede:arctag标签代码:
在目录下新建一个arctag.lib.php文件把下面代码写进去。
<?php if(!defined('DEDEINC'))exit('Request Error!');functionlib_arctag(&$ctag,&$refObj){global$dsql;$ar="row|10";FillAttsDefault($ctag->CAttribute->Items);extract($ctag->CAttribute->Items);$innertext=$ctag->GetInnerText();$tcp=newDedeTagParse();$tcp->SetNameSpace("field","[","]");$tcp->LoadSource($innertext);$aid=$refObj->Fields['id'];$revalue='';if($aid){$ids=array();$tag=array();$dsql->Execute("f","select tag from dede_taglist where aid = '$aid'");while($re=$dsql->GetArray("f")){$tag[] =$re['tag'];}if($tag){foreach($tagas$tk){$dsql->Execute("f1","select aid from dede_taglist where tag = '$tk'");while($re1=$dsql->GetArray("f1")){$ids[] =$re1['aid'];}}}if($ids){$ids =array_unique($ids);$sqa="(".join(",",$ids).")";$query= "SELECT se.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepathFROM `dede_archives` se LEFT JOIN `dede_arctype` tp ON se.typeid=tp.id WHERE se.id in$sqalimit$row";$dsql->Execute("f2",$query);while($row1=$dsql->GetArray("f2")){$row1['arcurl'] = GetFileUrl($row1['id'],$row1['typeid'],$row1['senddate'],$row1['title'],$row1['ismake'],$row1['arcrank'],$row1['namerule'],$row1['typedir'],$row1['money'],$row1['filename'],$row1['moresite'],$row1['siteurl'],$row1['sitepath']);$row1['title'] = cn_substr($row1['title'],10);foreach($tcp->CTagsas$tid=>$tt){$tcp->Assign($tid,$row1[$tt->GetName()]);}$revalue.=$tcp->GetResult();}}}return$revalue;}
注意和你使用的织梦模板编码一致。
前端调用:
{dede:arctag id=10}<ahref="[field:arcurl/]">[field:title/]</a> {/dede:arctag}