您的位置:首页 > 编程语言 > PHP开发

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

2016-06-08 13:56 627 查看
需求:
通过服务器的定时任务自动更新网站全站的所有文章,并生成sitemaps

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

代码:

<?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 = emptyempty($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(emptyempty($row) || emptyempty($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);

?>


当然windows一样可以使用,通过计划任务与dos命令完成 https://www.geek-share.com/detail/2676365651.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Sitemaps