发表日期:2016-09 文章编辑:小灯 浏览次数:536
能帮到别人~还真是有成就感啊,又是百度知道里的问题。
有网友向调用当前内容页面 作者发布的所有文档,这个功能之前写过,但是是用sql调用的。
需要的可以看这里http://www.dede58.com/a/zhimengjiaocheng/development/3573.html
好,下面教大家怎么自己开发一个标签来调用当前作者的所有文章。
首先将以下函数放到 include/extend.func.php 最下边,这个函数是用来获取静态页面的URL地址的。
| 123456789101112131415161718192021222324252627282930313233 | functionGetOneDocUrl($aid){global$dsql;include_once(DEDEINC."/channelunit.func.php");$aid=trim(ereg_replace('[^0-9]','',$aid));$chRow=$dsql->GetOne("Selectarc.*,ch.maintable,ch.addtable,ch.issystemFrom`dede_arctiny`arcleftjoin`dede_channeltype`chonch.id=arc.channelwherearc.id='$aid'");if(!is_array($chRow)){return$reArr;}else{if(empty($chRow['maintable']))$chRow['maintable']='dede_archives';}if($chRow['issystem']!=-1){$nquery="Selectarc.*,tp.typedir,tp.topid,tp.namerule,tp.moresite,tp.siteurl,tp.sitepathFrom`{$chRow['maintable']}`arcleftjoin`dede_arctype`tpontp.id=arc.typeidwherearc.id='$aid'";}else{$nquery="Selectarc.*,1asismake,0asmoney,''asfilename,tp.typedir,tp.topid,tp.namerule,tp.moresite,tp.siteurl,tp.sitepathFrom`{$chRow['addtable']}`arcleftjoin`dede_arctype`tpontp.id=arc.typeidwherearc.aid='$aid'";}$arcRow=$dsql->GetOne($nquery);$Url=GetFileUrl($aid,$arcRow['typeid'],$arcRow['senddate'],$reArr['title'],$arcRow['ismake'],$arcRow['arcrank'],$arcRow['namerule'],$arcRow['typedir'],$arcRow['money'],$arcRow['filename'],$arcRow['moresite'],$arcRow['siteurl'],$arcRow['sitepath']);return$Url;} |
然后将以下代码保存为diary.lib.php 放到include/taglib 目录下
| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | <?php/***调用当前作者文档*@version$Id:diary.lib.php1:372015年6月2日byJJM$*@linkhttp://www.jjm.hk*/if(!defined('DEDEINC')){exit("RequestError!");}functionlib_diary(&$ctag,&$refObj){global$dsql,$envs;$jjmhk="row|1,typeid|0";FillAttsDefault($ctag->CAttribute->Items,$jjmhk);extract($ctag->CAttribute->Items);$innertext=trim($ctag->GetInnerText());$ctp=newDedeTagParse();$ctp->SetNameSpace('field','[',']');$ctp->LoadSource($innertext);$writer=$ctag->GetAtt('writer');if($writer=='this'){$writer=isset($refObj->Fields['writer'])?$refObj->Fields['writer']:0;}$query="selecta.id,a.title,a.writer,a.pubdate,a.typeid,b.aidfromdede_archivesaLEFTJOINdede_addonarticlebonb.aid=a.idwherea.typeid='{$typeid}'anda.writer='{$writer}'orderbya.pubdatedescLIMIT0,$row";$dsql->SetQuery($query);$dsql->Execute('me',$query);while($rs=$dsql->GetArray('me')){$rs['pubdate']=GetDateMK($rs['pubdate']);$rs['arcurl']=GetOneDocUrl($rs['id']);$rs['title']=0==$titlelen?$rs['title']:cn_substr($rs['title'],$titlelen);$ctp->LoadSource($innertext);foreach($ctp->CTagsas$tagid=>$ctag){if(!empty($rs[strtolower($ctag->GetName())])){$ctp->Assign($tagid,$rs[$ctag->GetName()]);}}$revalue.=$ctp->GetResult();}return$revalue;} |
最后再内容页的模板中调用以下标签,下边的li span 标签 自己修改删除。
| 12345 | {dede:diaryrow='10'typeid='2'writer='this'}<li><ahref="[field:arcurl/]">[field:title/]</a><spanclass="p-l5">([field:pubdate/])</span></li>{/dede:diary} |
==============================分割线============================
标签说明:
row= 调用条数
typeid= 调用栏目ID
writer= 默认 this 无需修改
帮百度知道网友免费开发出来的效果,新建立了一个自定义模型,增加了3个自定义字段。 头像,微信号以及二维码上传。
