找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1857|回复: 0

[分享] dedecms会员中心空间中,spacenewart标签功能的拓展

[复制链接]
发表于 2018-8-3 20:17:10 | 显示全部楼层 |阅读模式 来自 河南省新乡市
在dede的博客空间中,spacenewart标签只能调用频道的内容,不能调用特定栏目的文章,不能调用附加表字段,功能有限。

现修改spacenewart标签的文件include\tpllib\plus_spacenewart.php

以实现如下功能:可以调用特定栏目的文章,可以调用附加表的字段。

include\tpllib\plus_spacenewart.php 修改后的代码如下:
  1. <?php&#160;&#160;&#160;if(!defined('DEDEINC'))&#160;exit('Request Error!');

  2. /**
  3. &#160;* 动态[url=http://bbs.piaoxian.net/forum-23-1.html]dedecms[/url]模板spacenewart标签
  4. &#160;*
  5. &#160;* @version&#160;&#160;&#160;&#160;&#160;&#160;&#160; $Id: plus_spacenewart.php 1 13:58 2010年7月5日Z tianya $
  6. &#160;* @package&#160;&#160;&#160;&#160;&#160;&#160;&#160; DedeCMS.Tpllib
  7. &#160;* @copyright&#160;&#160;&#160;&#160;&#160; Copyright (c) 2007 - 2010, DesDev, Inc.
  8. &#160;* @license&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;http://help.dedecms.com/usersguide/license.html
  9. &#160;* @link&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;http://www.dedecms.com
  10. &#160;*/

  11. &#160;&#160;
  12. function&#160;plus_spacenewart(&$atts,&$refObj,&$fields)
  13. {
  14. &#160;&#160;&#160;&#160;global $dsql,$_vars;

  15. &#160;&#160;&#160;&#160;$attlist =&#160;"channel=1,titlelen=40,infolen=200,row=8,imgwidth=120,imgheight=90";
  16. &#160;&#160;&#160;&#160;FillAtts($atts,$attlist);
  17. &#160;&#160;&#160;&#160;FillFields($atts,$fields,$refObj);
  18. &#160;&#160;&#160;&#160;extract($atts, EXTR_OVERWRITE);

  19. &#160;&#160;&#160;&#160;//获取附加表信息
  20. &#160;//$addfield ='fengge';
  21. &#160;&#160;&#160;&#160;$addfield =trim($addfields);
  22. &#160;//echo&#160;&#160;$addfield;
  23. &#160;&#160;&#160;&#160;$addfieldsSql =&#160;'';
  24. &#160;&#160;&#160;&#160;$addfieldsSqlJoin =&#160;'';
  25. &#160;&#160;&#160;&#160;if($addfield !=&#160;''&#160;&& !empty($channel))
  26. &#160;&#160;&#160;&#160;{
  27. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row2 = $dsql->GetOne("SELECT addtable FROM `dede_channeltype` WHERE id='$channel' ");
  28. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(isset($row2['addtable']) && trim($row2['addtable']) !=&#160;'')
  29. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
  30. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$addtable = trim($row2['addtable']);
  31. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$addfields = explode(',', $addfield);
  32. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row2['addtable'] = trim($row2['addtable']);
  33. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$addfieldsSql =&#160;",addf.".join(',addf.', $addfields);
  34. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$addfieldsSqlJoin =&#160;" LEFT JOIN `$addtable` addf ON addf.aid = arc.id ";
  35. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  36. &#160;&#160;&#160;&#160;}
  37. &#160;&#160;&#160;&#160;$query = "Select arc.*,mt.mtypename,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,
  38. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath $addfieldsSql
  39. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;from `dede_archives` arc
  40. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;left&#160;join&#160;`dede_arctype` tp on arc.typeid=tp.id
  41. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;left&#160;join&#160;`dede_mtypes` mt on mt.mtypeid=arc.mtype $addfieldsSqlJoin
  42. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;where arc.mid='{$_vars['mid']}'&#160;and arc.channel=$channel and arc.ismake='1'&#160;and arc.typeid&#160;in&#160;($typeid)
  43. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;order by&#160;id&#160;desc limit 0,$row";
  44. &#160;&#160;&#160;&#160;//echo&#160;$query;
  45. &#160;&#160;&#160;&#160;$dsql->SetQuery($query);
  46. &#160;&#160;&#160;&#160;$dsql->Execute("al");
  47. &#160;&#160;&#160;&#160;$artlist =&#160;'';
  48. &#160;&#160;&#160;&#160;$rearr = array();
  49. &#160;$i=1;
  50. &#160;&#160;&#160;&#160;while($row = $dsql->GetArray("al"))
  51. &#160;&#160;&#160;&#160;{
  52. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//处理一些特殊字段
  53. &#160;&#160;$row['i']=$i;
  54. &#160;&#160;$i=$i+1;
  55. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['infos'] = cn_substr($row['description'],$infolen);
  56. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['id'] =&#160; $row['id'];

  57. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['arcurl'] = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],
  58. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);

  59. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['typeurl'] = GetTypeUrl($row['typeid'],$row['typedir'],$row['isdefault'],$row['defaultname'],$row['ispart'],
  60. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);

  61. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if($row['litpic']=='')
  62. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
  63. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['litpic'] =&#160;'/images/defaultpic.gif';
  64. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  65. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(!preg_match("#^http:\/\/#i", $row['litpic']))
  66. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
  67. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['picname'] = $row['litpic'] = $GLOBALS['cfg_cmsurl'].$row['litpic'];
  68. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  69. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else
  70. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
  71. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['picname'] = $row['litpic'] = $row['litpic'];
  72. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  73. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['stime'] = GetDateMK($row['pubdate']);
  74. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['typelink'] =&#160;"<a href='".$row['typeurl']."'>".$row['typename']."</a>";
  75. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['image'] =&#160;"<img src='".$row['picname']."'&#160;border='0'&#160;width='$imgwidth'&#160;height='$imgheight'&#160;alt='".preg_replace("#['><]#",&#160;"", $row['title'])."'>";
  76. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['imglink'] =&#160;"<a href='".$row['filename']."'>".$row['image']."</a>";
  77. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['fulltitle'] = $row['title'];
  78. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['title'] = cn_substr($row['title'],$titlelen);
  79. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if($row['color']!='') {
  80. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['title'] =&#160;"<font color='".$row['color']."'>".$row['title']."</font>";
  81. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  82. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(preg_match('#b#', $row['flag']))
  83. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
  84. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['title'] =&#160;"<strong>".$row['title']."</strong>";
  85. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  86. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//$row['title'] =&#160;"<b>".$row['title']."</b>";

  87. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['textlink'] =&#160;"<a href='".$row['filename']."'>".$row['title']."</a>";

  88. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl'];
  89. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['memberurl'] = $GLOBALS['cfg_memberurl'];
  90. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$row['templeturl'] = $GLOBALS['cfg_templeturl'];
  91. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
  92. &#160;&#160;//$row['fengge'] = $row['fengge'];
  93. &#160;&#160;&#160;
  94. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$rearr[] = $row;
  95. &#160;&#160;&#160;&#160;}//loop line
  96. &#160;&#160;&#160;&#160;$dsql->FreeResult("al");
  97. &#160;&#160;&#160;&#160;return&#160;$rearr;
  98. }
复制代码

功能拓展后的spacenewart标签使用示例如下:
  1. {dede:spacenewart row=1 titlelen=60&#160; typeid='29'&#160;channel='18'addfields='name,shengshi,nianling'&#160;}

  2. <table width="220"&#160;border="0"&#160;cellspacing="0"&#160;cellpadding="0">
  3. <tr>
  4. <td height="28"&#160;align="left"&#160;valign="middle">姓名:<font color="#0041D9">{dede:field.name/}</font></td>
  5. </tr>
  6. <tr>
  7. <td height="28"&#160;align="left"&#160;valign="middle">籍贯:<font color="#0041D9">{dede:field.shengshi/}</font></td>
  8. </tr>
  9. <tr>
  10. <td height="28"&#160;align="left"&#160;valign="middle">年龄:<font color="#0041D9">{dede:field.nianling/}</font></td>
  11. </tr>
  12. </table>

  13. {/dede:spacenewart}
复制代码


其中name,shengshi,nianling字段为附加表字段,typeid='29'指定栏目,channel='18'指定频道。

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

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

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

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

关闭

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

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

GMT+8, 2024-5-7 22:58 , Processed in 0.043517 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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