国内流行的内容管理系统(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.

126 lines
4.4KB

  1. <?php if(!defined('DEDEINC')) exit("Request Error!");
  2. /**
  3. * 网站地图(sitemap类)
  4. *
  5. * @version $Id: sitemap.class.php 1 15:21 2010年7月5日Z tianya $
  6. * @package DedeCMS.Libraries
  7. * @copyright Copyright (c) 2007 - 2018, DesDev, Inc.
  8. * @copyright Copyright (c) 2020, DedeBIZ.COM
  9. * @license https://www.dedebiz.com/license/v6
  10. * @link https://www.dedebiz.com
  11. */
  12. require_once(DEDEINC."/channelunit.func.php");
  13. /**
  14. * 网站地图(sitemap类)
  15. *
  16. * @package TypeLink
  17. * @subpackage DedeCMS.Libraries
  18. * @link http://www.dedecms.com
  19. */
  20. class SiteMap
  21. {
  22. var $dsql;
  23. var $artDir;
  24. var $baseDir;
  25. //php5构造函数
  26. function __construct()
  27. {
  28. $this->idCounter = 0;
  29. $this->artDir = $GLOBALS['cfg_arcdir'];
  30. $this->baseDir = $GLOBALS['cfg_cmspath'].$GLOBALS['cfg_basedir'];
  31. $this->idArrary = "";
  32. $this->dsql = $GLOBALS['dsql'];
  33. }
  34. function SiteMap()
  35. {
  36. $this->__construct();
  37. }
  38. //清理类
  39. function Close()
  40. {
  41. }
  42. /**
  43. * 获取网站地图
  44. *
  45. * @access public
  46. * @param string $maptype 地图类型 site:站点 rss:rss
  47. * @return string
  48. */
  49. function GetSiteMap($maptype="site")
  50. {
  51. $mapString = "";
  52. if($maptype=="rss")
  53. {
  54. $this->dsql->SetQuery("SELECT id,typedir,isdefault,defaultname,typename,ispart,namerule2,moresite,siteurl,sitepath FROM #@__arctype WHERE ishidden<>1 AND reid=0 AND ispart<>2 ORDER BY sortrank");
  55. }
  56. else
  57. {
  58. $this->dsql->SetQuery("SELECT id,typedir,isdefault,defaultname,typename,ispart,namerule2,siteurl,sitepath,moresite,siteurl,sitepath FROM #@__arctype WHERE reid=0 AND ishidden<>1 ORDER BY sortrank");
  59. }
  60. $this->dsql->Execute(0);
  61. while($row=$this->dsql->GetObject(0))
  62. {
  63. if($maptype=="site")
  64. {
  65. $typelink = GetTypeUrl($row->id,MfTypedir($row->typedir),$row->isdefault,$row->defaultname,$row->ispart,$row->namerule2,$row->moresite,$row->siteurl,$row->sitepath);
  66. }
  67. else
  68. {
  69. $typelink = $GLOBALS['cfg_cmsurl']."/data/rss/".$row->id.".xml";
  70. }
  71. $mapString .= "<div class=\"linkbox\">\r\n<h3><a href='$typelink'>".$row->typename."</a></h3>";
  72. $mapString .= "\t<ul class=\"f6\">\t\t\r".$this->LogicListAllSunType($row->id,$maptype)."\t\n</ul></div>\r\n";
  73. /*
  74. $mapString .= "<tr><td width='17%' align='center' bgcolor='#FAFEF1'>";
  75. $mapString .= "<a href='$typelink'><b>".$row->typename."</b></a>";
  76. $mapString .= "</td><td width='83%' bgcolor='#FFFFFF'>";
  77. $mapString .= $this->LogicListAllSunType($row->id,$maptype);
  78. $mapString .= "</td></tr>";
  79. */
  80. }
  81. return $mapString;
  82. }
  83. /**
  84. * 获得子类目的递归调用
  85. *
  86. * @access public
  87. * @param int $id 栏目ID
  88. * @param string $maptype 地图类型
  89. * @return string
  90. */
  91. function LogicListAllSunType($id, $maptype)
  92. {
  93. $fid = $id;
  94. $mapString = "";
  95. if($maptype=="rss")
  96. {
  97. $this->dsql->SetQuery("SELECT id,typedir,isdefault,defaultname,typename,ispart,namerule2,moresite,siteurl,sitepath FROM #@__arctype WHERE reid='".$id."' AND ishidden<>1 AND ispart<>2 ORDER BY sortrank");
  98. }
  99. else
  100. {
  101. $this->dsql->SetQuery("SELECT id,typedir,isdefault,defaultname,typename,ispart,namerule2,moresite,siteurl,sitepath FROM #@__arctype WHERE reid='".$id."' AND ishidden<>1 ORDER BY sortrank");
  102. }
  103. $this->dsql->Execute($fid);
  104. while($row=$this->dsql->GetObject($fid))
  105. {
  106. if($maptype=="site")
  107. {
  108. $typelink = GetTypeUrl($row->id,MfTypedir($row->typedir),$row->isdefault,$row->defaultname,$row->ispart,$row->namerule2,$row->moresite,$row->siteurl,$row->sitepath);
  109. }
  110. else
  111. {
  112. $typelink = $GLOBALS['cfg_cmsurl']."/data/rss/".$row->id.".xml";
  113. }
  114. $mapString .= "<li><a href='$typelink'>".$row->typename."</a></li>\n\t\t";
  115. $mapString .= $this->LogicListAllSunType($row->id,$maptype);
  116. }
  117. return $mapString;
  118. }
  119. }