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

所属分类: CMS教程 / phpcms 阅读数: 798
收藏 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建站系统-个人建站必不可少的工具

关键字描述:建站 工具 必不可少 系统 个人 网站 CMS 管理系统 站长   CMS系统已经成为个人站长建站过程中必不可少的工具,现在已经基本看不到多少站长还在靠手工写HTML页面,究其原因无非是因为CMS具有使用简单,维护方便等众多优点。   CMS的发展也带来了个
收藏 0 赞 0 分享

PHPCMS2008 MySQL Errno:1064错误

关键字描述:错误 MySQL 问题 NOT NULL 数据库 安装 unsigned tinyint PHPCMS2008安装最后一步出现MySQL Errno : 1064错误,在线等! MySQL Query : CREATE TABLE `phpcms_admi
收藏 0 赞 0 分享

PHPCMS 模板制作教程 黑夜之舞出品

读得懂这个模板教的前提是:会那么一点点HTML基础的知识。
收藏 0 赞 0 分享

火车头PHPCMS2008SP4 文章免登陆发布接口

可以达到和手工发布文章完全一样的效果,包括是否生成静态,去掉外链,下载远程图片等功能.
收藏 0 赞 0 分享

PHPcms 2008 注册选择模型关闭后,注册不能自动登录的问题

解决PHPcms 2008 sp4 注册选择模型关闭后,注册不能自动登录的问题
收藏 0 赞 0 分享

PHPCMS2008 SP4 心情排行指数不显示的解决办法

正在准备模板大赛的作品,修改这个模块的代码时,发现其指数不能正常显示,自己顺手就改一下,可能不官方,但是能用.下面直接贴代码,有需要的就拿吧.
收藏 0 赞 0 分享

Phpcms 2008 整合Ucenter的图文方法

PHPCMS与Ucenter整合 图文详解Phpcms 2008 整合 Ucenter的方法
收藏 0 赞 0 分享

phpcms+ucenter+discuz论坛整合教程

在 UCenter 系统下的各 Comsenz 产品均可以实现同步登录、同步退出,如何设置同步登录可参考教程
收藏 0 赞 0 分享

phpcms2008+ucenter1.5+discuz!7.2 ,整合后可同步登陆即出完美整合,但需要要激活

系统为windows2003 IIS6.0 整合软件PHPCMS2008, ucenter 1.5 , discuz! 7.2   [注:我用的都是utf-8的版本]
收藏 0 赞 0 分享

phpcms2008下的自定义url规则教程

刚开始使用的时候一般发现,不能很好满足我们自定义内容页的目录结构的需求,但其实phpcms是支持的,下面是具体的实现方法。
收藏 0 赞 0 分享
查看更多