找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1900|回复: 0

[分享] dedecms 二次开发调用当前作者文档的标签

[复制链接]
发表于 2018-8-1 09:53:44 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
下面教大家怎么自己开发一个标签来调用当前作者的所有文章。


首先将以下函数放到 include/extend.func.php 最下边,这个函数是用来获取静态页面的URL地址的。


  1. function GetOneDocUrl($aid)
  2. {
  3.     global $dsql;
  4.     include_once(DEDEINC."/channelunit.func.php");
  5.     $aid = trim(ereg_replace('[^0-9]','',$aid));
  6.   
  7.     $chRow = $dsql->GetOne("Select arc.*,ch.maintable,ch.addtable,ch.issystem From `dede_arctiny` arc left join `dede_channeltype` ch on ch.id=arc.channel where arc.id='$aid' ");
  8.   
  9.     if(!is_array($chRow)) {
  10.         return $reArr;
  11.     }
  12.     else {
  13.         if(empty($chRow['maintable'])) $chRow['maintable'] = 'dede_archives';
  14.     }
  15.   
  16.     if($chRow['issystem']!=-1)
  17.     {
  18.         $nquery = " Select arc.*,tp.typedir,tp.topid,tp.namerule,tp.moresite,tp.siteurl,tp.sitepath
  19.                     From `{$chRow['maintable']}` arc left join `dede_arctype` tp on tp.id=arc.typeid
  20.                     where arc.id='$aid' ";
  21.     }
  22.     else
  23.     {
  24.         $nquery = " Select arc.*,1 as ismake,0 as money,'' as filename,tp.typedir,tp.topid,tp.namerule,tp.moresite,tp.siteurl,tp.sitepath
  25.                     From `{$chRow['addtable']}` arc left join `dede_arctype` tp on tp.id=arc.typeid
  26.                     where arc.aid='$aid' ";
  27.     }
  28.   
  29.     $arcRow = $dsql->GetOne($nquery);
  30.   
  31.     $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']);
  32.     return $Url;
  33. }
复制代码





然后将以下代码保存为 diary.lib.php  放到include/taglib 目录下


  1. <?php
  2. /**
  3. * 调用当前作者文档
  4. * @version        $Id: diary.lib.php  1:37 2015年6月2日 by JJM $
  5. * @link           http://www.jjm.hk
  6. */
  7. if(!defined('DEDEINC')){
  8.     exit("Request Error!");
  9. }
  10. function lib_diary(&$ctag,&$refObj)
  11. {
  12. global $dsql,$envs;
  13. $jjmhk="row|1,typeid|0";
  14. FillAttsDefault($ctag->CAttribute->Items,$jjmhk);
  15. extract($ctag->CAttribute->Items);
  16. $innertext = trim($ctag->GetInnerText());
  17. $ctp = new DedeTagParse();
  18. $ctp->SetNameSpace('field','[',']');
  19. $ctp->LoadSource($innertext);
  20. $writer = $ctag->GetAtt('writer');
  21. if($writer=='this')
  22. {
  23. $writer =  isset($refObj->Fields['writer']) ? $refObj->Fields['writer'] : 0;
  24. }
  25. $query = "select a.id,a.title,a.writer,a.pubdate,a.typeid,b.aid from dede_archives a LEFT JOIN dede_addonarticle b on b.aid=a.id where a.typeid='{$typeid}' and a.writer='{$writer}' order by a.pubdate desc LIMIT 0,$row";
  26. $dsql->SetQuery($query);
  27. $dsql->Execute('me',$query);
  28. while($rs= $dsql->GetArray('me'))
  29.   {
  30. $rs['pubdate']=GetDateMK($rs['pubdate']);
  31. $rs['arcurl']=GetOneDocUrl($rs['id']);
  32.       $rs['title'] = 0 == $titlelen?$rs['title']:cn_substr($rs['title'], $titlelen);
  33.       
  34.       $ctp->LoadSource($innertext);
  35.       foreach($ctp->CTags as$tagid=>$ctag) {
  36.             if(!empty($rs[strtolower($ctag->GetName())])) {
  37.                 $ctp->Assign($tagid,$rs[$ctag->GetName()]);
  38.             }
  39.           }
  40.           $revalue.= $ctp->GetResult();
  41. }
  42. return $revalue;
  43. }
复制代码





最后再内容页的模板中调用以下标签,下边的li span 标签 自己修改删除。


  1. {dede:diary row='10' typeid='2' writer='this'}
  2.          
  3. <li><a href="[field:arcurl/]">[field:title/]</a><span class="p-l5">([field:pubdate/])</span></li>
  4.       
  5. {/dede:diary}
复制代码




==============================分割线============================


标签说明:


row= 调用条数  

typeid= 调用栏目ID

writer=  默认  this 无需修改

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-23 05:24 , Processed in 0.040662 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表