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

所属分类: CMS教程 / phpcms 阅读数: 786
收藏 0 赞 0 分享
需求:
通过服务器的定时任务自动更新网站全站的所有文章,并生成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.jb51.net/article/86202.htm
更多精彩内容其他人还在看

PHPCMS开启全文搜索(sphinx)后搜索无效的解决方法

配置好sphinx,并在后台开启后,无论搜索什么关键字,每次搜索结果都是顺序的把我所有的文章列出来
收藏 0 赞 0 分享

PHPCMS取消搜索时的分词功能的方法

最近弄一个站,但是搜索功能有点蛋疼了。分词功能出来的结果,好像不如不用。所以做以下修改,暂时先不用分词功能吧。
收藏 0 赞 0 分享

PHPCMS实现文章置顶功能的方法

这篇文章主要介绍了PHPCMS实现文章置顶功能的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

phpcms教程之增加统计代码可以统计每天发表文章数量

本文介绍了给phpcms增加统计代码,实现可以统计每天发表文章数量的功能,大家参考使用吧
收藏 0 赞 0 分享

如何解决phpcms V9后台拿shell时出错问题

很多新手朋友都遇到过phpcms V9后台拿shell时出错,下面为大家介绍个不错的解决方法,希望对大家有所帮助
收藏 0 赞 0 分享

phpcms 模板页面使用的标签和功能记录整理

在使用phpcms的时候遇到了一些问题,主要是模板页面使用的标签,记录下以后再做的时候可以使用到
收藏 0 赞 0 分享

phpcms链接数据库的配置文件在哪

phpcms修改链接数据库的配置文件信息需要知道其位置,大家看下本文就知道了
收藏 0 赞 0 分享

phpcms 投稿问题之游客投稿(不用登录)

最近在使用phpcms,需要匿名投稿功能及审核,这里简单分享下方法,需要的朋友可以参考下
收藏 0 赞 0 分享

phpcms v9将栏目描述的多行文本修改为编辑器

phpcms v9在添加栏目的时候,栏目描述为多行文本,无法满足有图片,以及格式的修改调整,具体的实现如下,感兴趣的朋友可以参考下
收藏 0 赞 0 分享

phpcms根据栏目放置加载不同广告方法分享

本文主要介绍了phpcms根据栏目放置加载不同广告的方法,大家参考使用吧
收藏 0 赞 0 分享
查看更多