• 分类

  • 重置

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. ?>  

    当然windows一样可以使用,通过计划任务与dos命令完成 https://www.lingkb.com/article/86202.htm

发表评论

发表评论