Villain博客

您现在的位置是:首页 > 技术笔记

技术笔记

帝国cms非插件版sitemap地图 php加伪静态搞定

2020-09-09技术笔记
帝国cms非插件版sitemap地图 php加伪静态搞定

把下面的php文件保存为sitemap.php 放到根目录.然后添加伪静态规则

rewrite ^/sitemap.xml /sitemap.php; rewrite ^/sitemap-([0-9]+).xml /sitemap.php?classid=$1;

然后在百度站长后台添加http://www.1004619.com/sitemap.xml 就可以每天推送更新的内容链接了!!

  1. <?php
  2. require('e/class/connect.php');
  3. require('e/class/db_sql.php');
  4. require('e/data/dbcache/class.php');
  5. $link=db_connect();
  6. $empire=new mysqlquery();
  7.  
  8. //------- 插件参数设置开始 -----
  9.  
  10. //只显示栏目最新几条信息,0为全部显示
  11. $shownum=2000;
  12.  
  13. //------- 插件参数设置结束 -----
  14.  
  15.  
  16. header("Content-type: application/xml");
  17.  
  18. //去除HTML标记
  19.  
  20.  
  21. //取得网站地址
  22. $siteurl=$public_r['newsurl'];
  23. if(!stristr($public_r['newsurl'],'://'))
  24. {
  25. $siteurl=eReturnDomain().$public_r['newsurl'];
  26. }
  27. $sitedomain=substr($siteurl,0,-1);//网站域名
  28.  
  29. $classid=(int)$_GET['classid'];
  30. if(empty($classid))//栏目导航
  31. {
  32. ?>
  33. <?='<?xml version="1.0" encoding="UTF-8"?>'?>
  34.  
  35. <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  36. <?php
  37. $sql=$empire->query("SELECT classid FROM {$dbtbpre}enewsclass WHERE islast=1");
  38. while($r=$empire->fetch($sql))
  39. {
  40. $infor=$empire->fetch1("SELECT newstime FROM {$dbtbpre}ecms_".$class_r[$r[classid]][tbname]." WHERE classid='$r[classid]' ORDER BY newstime DESC LIMIT 1");
  41. ?>
  42. <sitemap>
  43. <loc><?=$siteurl?>sitemap-<?=$r[classid]?>.xml</loc>
  44. <lastmod><?=date('Y-m-d',$infor[newstime])?></lastmod>
  45. </sitemap>
  46. <?php
  47. }
  48. ?>
  49. </sitemapindex>
  50. <?php
  51. }
  52. else//信息列表
  53. {
  54. if(!$class_r[$classid]['tbname'])
  55. {
  56. exit();
  57. }
  58. $limit=$shownum?' order by newstime desc limit '.$shownum:'';
  59. ?>
  60. <?='<?xml version="1.0" encoding="UTF-8"?>'?>
  61.  
  62. <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  63. <?php
  64. $sql=$empire->query("SELECT id,classid,isurl,title,titleurl,smalltext,newstime FROM {$dbtbpre}ecms_".$class_r[$classid][tbname]." WHERE classid='$classid'".$limit);
  65. while($r=$empire->fetch($sql))
  66. {
  67. if($r['isurl'])
  68. {
  69. continue;
  70. }
  71. $titleurl=sys_ReturnBqTitleLink($r);
  72. $titleurl=str_replace('&','&amp;',$titleurl);
  73. if(!stristr($titleurl,'://'))
  74. {
  75. if($public_r['newsurl']=='/')
  76. {
  77. $titleurl=$sitedomain.$titleurl;
  78. }
  79. else
  80. {
  81. $titleurl=str_replace($public_r['newsurl'],$siteurl,$titleurl);
  82. }
  83. }
  84. ?>
  85. <url>
  86. <loc><?=$titleurl?></loc>
  87. <lastmod><?=date('Y-m-d',$r[newstime])?></lastmod>
  88. <changefreq>daily</changefreq>
  89. <priority>0.8</priority>
  90. </url>
  91. <?php
  92. }
  93. ?>
  94. </urlset>
  95. <?php
  96. }
  97.  
  98. db_close();
  99. $empire=null;
  100. ?>