好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHPCMS V9 全站 Sitemaps生成实现代码[服务器端版]

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

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

代码:

PHP Code 复制内容到剪贴板

<?php   

/** 

 *  sitemap.php PHPCMS V9 sitemaps入口   

 *   

 * @copyright           (C) 2015-2018 piaoyun.cc   

 * @license             http://piaoyun.cc   

 * @lastmodify          2015-05-06   

 */   

if (PHP_SAPI !=  'cli' )   

{   

    header( 'location: sitemaps.xml' );   

     exit ;   

}   

define( 'SITEMAP_SIZE' , 10000);   //sitemaps中最大输出数量    

define( 'MODEL_SIZE' , 3000);      //每个模型中最大输出数量    

$model_arr  =  array (1=> '资讯' , 2=> '图片' , 3=> '下载' );  //定义需要生成sitemaps的模型    

    

define( 'PHPCMS_PATH' , dirname( __FILE__ ).DIRECTORY_SEPARATOR);   

include  PHPCMS_PATH. '/phpcms/base.php' ;   

    

$param  = pc_base::load_sys_class( 'param' );   

    

$model_arr  =  empty empty ( $model_arr ) ? getcache( 'model' , 'commons' ) :  $model_arr ;   

    

$map  =  array ();   

foreach  ( $model_arr   as   $modelid  =>  $model )   

{   

     $tablename  =  $model [ 'tablename' ];   

        

     $db  = pc_base::load_model( 'content_model' );   

     $db ->set_model( $modelid );   

        

     if ( $db -> count () &&  count ( $map ) < SITEMAP_SIZE)   

    {   

         $order  =  'id desc' ;   

         $arc  =  $db ->select( array ( 'status' =>99),  'url,updatetime' , MODEL_SIZE,  $order );   

         $map  =  array_merge ( $map ,  $arc );   

    }   

}   

    

/* 遍历生成 */   

$html  =  '<?xml version="1.0" encoding="utf-8"?> 

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' ;   

    

foreach  ( $map   as   $row )   

{   

     if ( empty empty ( $row ) ||  empty empty ( $row [ 'url' ]))  continue ;   

        

     $date  =  date ( "Y-m-d" ,  $row [ 'updatetime' ]);   

     $url  =  str_replace ( array ( '&' ,  '\'' ,  '"' ,  '>' ,  '<' ),  array ( '&' ,  ''' ,  '"' ,  '>' ,  '<' ),  $row [ 'url' ]);   

     $html  .= "   

<url>   

        <loc>{ $url }</loc>   

        <lastmod>{ $date }</lastmod>   

        <changefreq>daily</changefreq>   

        <priority>0.8</priority>   

</url>";   

}   

    

$html  .=  '</urlset>' ;   

file_put_contents ( './sitemaps.xml' ,  $html );   

?>  

 

查看更多关于PHPCMS V9 全站 Sitemaps生成实现代码[服务器端版]的详细内容...

  阅读:45次