织梦二次开发调用当前标签的解决方法
对于熟悉使用织梦的PHP来说并不难,只要仔细的写一段代码即可,下文是爱站技术频道小编为你整理的织梦二次开发调用当前标签的解决方法,希望对你了解这方面内容有所帮助!
首先将以下函数放到 include/extend.func.php 最下边,这个函数是用来获取静态页面的URL地址的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
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.sitepath From`{$chRow['maintable']}`arcleftjoin`dede_arctype`tpontp.id=arc.typeid wherearc.id='$aid'"; } else { $nquery="Selectarc.*,1asismake,0asmoney,''asfilename,tp.typedir,tp.topid,tp.namerule,tp.moresite,tp.siteurl,tp.sitepath From`{$chRow['addtable']}`arcleftjoin`dede_arctype`tpontp.id=arc.typeid wherearc.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 目录下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
/** *调用当前作者文档 *@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 标签 自己修改删除。
1 2 3 4 5 |
{dede:diaryrow='10'typeid='2'writer='this'}
{/dede:diary}
|
==============================分割线============================
标签说明:
row= 调用条数
typeid= 调用栏目ID
writer= 默认 this 无需修改
帮百度知道网友免费开发出来的效果,新建立了一个自定义模型,增加了3个自定义字段。 头像,微信号以及二维码上传。
上文是爱站技术频道小编为大家整理的关于织梦二次开发调用当前标签的解决方法,相信大家都有了一定的了解,大家可以跟着爱站技术频道小编的步骤来操作一遍。