需求:
通过服务器的定时任务自动更新网站全站的所有文章,并生成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生成实现代码[服务器端版]的详细内容...