欢迎光临
我们一直在努力

PHPCMS V9 全站Sitemaps生成[服务器端版]

需求:
通过服务器的定时任务自动更新网站全站的所有文章,并生成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 = empty(model_arr) ? getcache('model','commons') : model_arr;map = array();
foreach (model_arr asmodelid => 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 asrow)
{
    if(empty(row) || empty(row['url'])) continue;
     
    date = date("Y-m-d",row['updatetime']);
    url = str_replace(array('&', '\'', '"', '>', '<'), array('&amp;', '&apos;', '&quot;', '&gt;', '&lt;'),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);
?>
赞(0)
未经允许不得转载:飘云 » PHPCMS V9 全站Sitemaps生成[服务器端版]
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址