优选主流主机商
任何主机均需规范使用

PHPCMS V9 全站 Sitemaps 自动生成教程(服务器端代码详解)

需求:
通过服务器的定时任务自动更新网站全站的所有文章,并生成sitemaps

以下代码为sitemaps crontab for phpcms v9,以下代码保存到phpcms 根目录下,配置cronTab定时生成即可

代码:

PHP Code复制内容到剪贴板

  1. <?php
  2. /**
  3.  *  sitemap.php PHPCMS V9 sitemaps入口
  4.  *
  5.  * @copyright           (C) 2015-2018 piaoyun.cc
  6.  * @license             http://piaoyun.cc
  7.  * @lastmodify          2015-05-06
  8.  */
  9. if(PHP_SAPI != ‘cli’)
  10. {
  11.     header(‘location: sitemaps.xml’);
  12.     exit;
  13. }
  14. define(‘SITEMAP_SIZE’, 10000);  //sitemaps中最大输出数量
  15. define(‘MODEL_SIZE’, 3000);     //每个模型中最大输出数量
  16. $model_arr = array(1=>’资讯’, 2=>’图片’, 3=>’下载’); //定义需要生成sitemaps的模型
  17.  
  18. define(‘PHPCMS_PATH’, dirname(__FILE__).DIRECTORY_SEPARATOR);
  19. include PHPCMS_PATH.’/phpcms/base.php’;
  20.  
  21. $param = pc_base::load_sys_class(‘param’);
  22.  
  23. $model_arr = emptyempty($model_arr) ? getcache(‘model’,’commons’) : $model_arr;
  24.  
  25. $map = array();
  26. foreach ($model_arr as $modelid => $model)
  27. {
  28.     $tablename = $model[‘tablename’];
  29.  
  30.     $db = pc_base::load_model(‘content_model’);
  31.     $db->set_model($modelid);
  32.  
  33.     if($db->count() && count($map) < SITEMAP_SIZE)
  34.     {
  35.         $order = ‘id desc’;
  36.         $arc = $db->select(array(‘status’=>99), ‘url,updatetime’, MODEL_SIZE, $order);
  37.         $map = array_merge($map, $arc);
  38.     }
  39. }
  40.  
  41. /* 遍历生成 */
  42. $html = ‘<?xml version=”1.0″ encoding=”utf-8″?>
  43. <urlset xmlns=”http://www.sitemaps.org/schemas/sitemap/0.9″>’;
  44.  
  45. foreach ($map as $row)
  46. {
  47.     if(emptyempty($row) || emptyempty($row[‘url’])) continue;
  48.  
  49.     $date = date(“Y-m-d”, $row[‘updatetime’]);
  50.     $url = str_replace(array(‘&’, ‘\”, ‘”‘, ‘>’, ‘<‘), array(‘&’, ”’, ‘”‘, ‘>’, ‘<‘), $row[‘url’]);
  51.     $html .= “
  52. <url>
  53.         <loc>{$url}</loc>
  54.         <lastmod>{$date}</lastmod>
  55.         <changefreq>daily</changefreq>
  56.         <priority>0.8</priority>
  57. </url>”;
  58. }
  59.  
  60. $html .= ‘</urlset>’;
  61. file_put_contents(‘./sitemaps.xml’, $html);
  62. ?>
未经允许不得转载:搬瓦工中文网 » PHPCMS V9 全站 Sitemaps 自动生成教程(服务器端代码详解)