国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
2.5KB

  1. <?php
  2. /**
  3. * 子栏目调用标签
  4. *
  5. * @version $Id: sonchannel.lib.php 1 9:29 2010年7月6日Z tianya $
  6. * @package DedeCMS.Taglib
  7. * @copyright Copyright (c) 2007 - 2020, DesDev, Inc.
  8. * @license http://help.dedecms.com/usersguide/license.html
  9. * @link http://www.dedecms.com
  10. */
  11. /*>>dede>>
  12. <name>子栏目标签</name>
  13. <type>全局标记</type>
  14. <for>V55,V56,V57</for>
  15. <description>子栏目调用标签</description>
  16. <demo>
  17. {dede:sonchannel}
  18. <a href='[field:typeurl/]'>[field:typename/]</a>
  19. {/dede:sonchannel}
  20. </demo>
  21. <attributes>
  22. <iterm>row:返回数目</iterm>
  23. <iterm>col:默认单列显示</iterm>
  24. <iterm>nosonmsg:没有指定ID子栏目显示的信息内容</iterm>
  25. </attributes>
  26. >>dede>>*/
  27. function lib_sonchannel(&$ctag,&$refObj)
  28. {
  29. global $_sys_globals,$dsql;
  30. $attlist = "row|100,nosonmsg|,col|1";
  31. FillAttsDefault($ctag->CAttribute->Items,$attlist);
  32. extract($ctag->CAttribute->Items, EXTR_SKIP);
  33. $innertext = $ctag->GetInnerText();
  34. $typeid = $_sys_globals['typeid'];
  35. if(empty($typeid))
  36. {
  37. return $ctag->GetAtt('nosonmsg');
  38. }
  39. $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
  40. FROM `#@__arctype` WHERE reid='$typeid' AND ishidden<>1 ORDER BY sortrank ASC LIMIT 0,$row";
  41. //And id<>'$typeid'
  42. $dtp2 = new DedeTagParse();
  43. $dtp2->SetNameSpace("field","[","]");
  44. $dtp2->LoadSource($innertext);
  45. $dsql->SetQuery($sql);
  46. $dsql->Execute();
  47. $line = $row;
  48. $GLOBALS['autoindex'] = 0;
  49. $likeType = '';
  50. for($i=0;$i < $line;$i++)
  51. {
  52. if($col>1) $likeType .= "<dl>\r\n";
  53. for($j=0;$j<$col;$j++)
  54. {
  55. if($col>1) $likeType .= "<dd>\r\n";
  56. if($row=$dsql->GetArray())
  57. {
  58. $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);
  59. if(is_array($dtp2->CTags))
  60. {
  61. foreach($dtp2->CTags as $tagid=>$ctag){
  62. if(isset($row[$ctag->GetName()])) $dtp2->Assign($tagid,$row[$ctag->GetName()]);
  63. }
  64. }
  65. $likeType .= $dtp2->GetResult();
  66. }
  67. if($col>1) $likeType .= "</dd>\r\n";
  68. $GLOBALS['autoindex']++;
  69. }//Loop Col
  70. if($col>1)
  71. {
  72. $i += $col - 1;
  73. $likeType .= " </dl>\r\n";
  74. }
  75. }//Loop for $i
  76. $dsql->FreeResult();
  77. return $likeType;
  78. }