很简单的修改了 原phpcms自带的 生成xml的程序文件 ,
原来的生成程序文件是 /phpcms/modules/admin/googlesitemap.php
修改这个文件放到根目录下命名为sitemap.php,代码如下:
<?php if(PHP_SAPI != 'cli') { header('location: sitemap.xml'); exit; } define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR); include PHPCMS_PATH.'phpcms/base.php'; pc_base::load_sys_class('form', '', 0); class gbsitemap { function __construct() { $this->header = "<\x3Fxml version=\"1.0\" encoding=\"UTF-8\"\x3F>\n\t<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">"; $this->charset = "UTF-8"; $this->footer = "\t</urlset>\n"; $this->baidunews_footer = "</document>"; $this->items = array(); $this->baidunew_items = array(); //生成栏目级别选项 $this->siteid = 1; $this->categorys = getcache('category_content_'.$this->siteid,'commons'); } function add_item2($new_item) { $this->items[] = $new_item; } function build( $file_name = null ) { $map = $this->header . "\n"; foreach ($this->items AS $item){ $map .= "\t\t<url>\n\t\t\t<loc>$item[loc]</loc>\n"; $map .= "\t\t\t<lastmod>$item[lastmod]</lastmod>\n"; $map .= "\t\t\t<changefreq>$item[changefreq]</changefreq>\n"; $map .= "\t\t\t<priority>$item[priority]</priority>\n"; $map .= "\t\t</url>\n\n"; } $map .= $this->footer . "\n"; if (!is_null($file_name)){ return file_put_contents($file_name, $map); } else { return $map; } } function google_sitemap_item($loc, $lastmod = '', $changefreq = '', $priority = '') { $data = array(); $data['loc'] = $loc; $data['lastmod'] = $lastmod; $data['changefreq'] = $changefreq; $data['priority'] = $priority; return $data; } /** * * 百度新闻数组 组成 * @param $title * @param $link * @param $description * @param $text * @param $image * @param $keywords * @param $category * @param $author * @param $source * @param $pubDate */ function baidunews_item($title, $link = '', $description = '',$text = '',$image = '', $keywords = '',$category = '',$author = '',$source='',$pubDate='') { $data = array(); $data['title'] = $title; $data['link'] = $link; $data['description'] = $description; $data['text'] = $text; $data['image'] = $image; $data['keywords'] = $keywords; $data['category'] = $category; $data['author'] = $author; $data['source'] = $source; $data['pubDate'] = $pubDate; return $data; } function add_baidunews_item($new_item){ $this->baidunew_items[] = $new_item; } function baidunews_build( $file_name = null ,$this_domain,$email,$time) { //百度头部 $this->baidunews = ''; $this->baidunews = "<?xml version=\"1.0\" encoding=\"".CHARSET."\" ?>\n"; $this->baidunews .= "<document>\n"; $this->baidunews .= "<webSite>".$this_domain."</webSite>\n"; $this->baidunews .= "<webMaster>".$email."</webMaster>\n"; $this->baidunews .= "<updatePeri>".$time."</updatePeri>\n"; foreach ($this->baidunew_items AS $item){ $this->baidunews .= "<item>\n"; $this->baidunews .= "<title>".$item['title']."</title>\n"; $this->baidunews .= "<link>".$item['link']."</link>\n"; $this->baidunews .= "<description>".$item['description'] ."</description>\n"; $this->baidunews .= "<text>".$item['text']."</text>\n"; $this->baidunews .= "<image>".$item['image']."</image>\n"; $this->baidunews .= "<keywords>".$item['keywords']."</keywords>\n"; $this->baidunews .= "<category>".$item['category']."</category>\n"; $this->baidunews .= "<author>".$item['author']."</author>\n"; $this->baidunews .= "<source>".$item['source']."</source>\n"; $this->baidunews .= "<pubDate>".$item['pubDate']."</pubDate>\n"; $this->baidunews .= "</item>\n"; } $this->baidunews .= $this->baidunews_footer . "\n"; if (!is_null($file_name)){ return file_put_contents($file_name, $this->baidunews); } else { return $this->baidunews; } } /** * * Enter 生成google sitemap, 百度新闻协议 */ function set ($request) { $hits_db = pc_base::load_model('hits_model'); $dosubmit = isset($request['dosubmit']) ? $request['dosubmit'] : $_GET['dosubmit']; //读站点缓存 $siteid = $this->siteid; $sitecache = getcache('sitelist','commons'); //根据当前站点,取得文件存放路径 $systemconfig = pc_base::load_config('system'); $html_root = substr($systemconfig['html_root'], 1); //判断当前站点目录,是PHPCMS则把文件写到根目录下, 不是则写到分站目录下.(分站目录用由静态文件路经html_root和分站目录dirname组成) if($siteid==1){ $dir = PHPCMS_PATH; }else { $dir = PHPCMS_PATH.$html_root.DIRECTORY_SEPARATOR.$sitecache[$siteid]['dirname'].DIRECTORY_SEPARATOR; } //模型缓存 $modelcache = getcache('model','commons'); //获取当前站点域名,下面生成URL时会用到. $this_domain = substr($sitecache[$siteid]['domain'], 0,strlen($sitecache[$siteid]['domain'])-1); //生成百度新闻 if($request['mark']) { $baidunum = $request['baidunum'] ? intval($request['baidunum']) : 20; if($request['catids']=="")showmessage(L('choose_category'), HTTP_REFERER); $catids = $request['catids']; $catid_cache = $this->categorys;//栏目缓存 $this->content_db = pc_base::load_model('content_model'); foreach ($catids as $catid) { $modelid = $catid_cache[$catid]['modelid'];//根据栏目ID查出modelid 进而确定表名,并结合栏目ID:catid 检索出对应栏目下的新闻条数 $this->content_db->set_model($modelid); $result = $this->content_db->select(array('catid'=>$catid,'status'=>99), '*', $limit = "0,$baidunum", 'id desc'); //重设表前缀,for循环时用来查,文章正文 $this->content_db->table_name = $this->content_db->table_name.'_data'; foreach ($result as $arr){ //把每一条数据都装入数组中 extract($arr); if(!preg_match('/^(http|https):\/\//', $url)){ $url = $this_domain.$url; } if($thumb != ""){ if(!preg_match('/^(http|https):\/\//', $thumb)){ $thumb = $this_domain.$thumb; } } //取当前新闻模型 附属表 取 新闻正文 $url = htmlspecialchars($url); $description = htmlspecialchars(strip_tags($description)); //根据本条ID,从对应tablename_data取出正文内容 $content_arr = $this->content_db->get_one(array('id'=>$id),'content'); $content = htmlspecialchars(strip_tags($content_arr['content'])); //组合数据 $smi = $this->baidunews_item($title,$url,$description,$content,$thumb, $keywords,$category,$author,$source,date('Y-m-d', $inputtime));//推荐文件 $this->add_baidunews_item($smi); } } $baidunews_file = $dir.'baidunews.xml'; @mkdir($dir,0777,true); $this->baidunews_build($baidunews_file,$this_domain,$request['email'],$request['time']); } //生成网站地图 $content_priority = $request['content_priority']; $content_changefreq = $request['content_changefreq']; $num = $request['num'] ? intval($request['num']) : 100; $today = date('Y-m-d'); $domain = $this_domain; //生成地图头部 -第一条 $smi = $this->google_sitemap_item($domain, $today, 'daily', '1.0'); $this->add_item2($smi); $this->content_db = pc_base::load_model('content_model'); //只提取该站点的模型.再循环取数据,生成站点地图. $modelcache = getcache('model','commons'); $new_model = array(); foreach ($modelcache as $modelid => $mod){ if($mod['siteid']==$siteid){ $new_model[$modelid]['modelid'] = $modelid; $new_model[$modelid]['name'] = $mod['name']; } } foreach($new_model as $modelid=>$m) {//每个模块取出num条数据 $this->content_db->set_model($modelid);// 或者 $this->conetnt_db->set_model($modelid); $result = $this->content_db->select(array('status'=>99), '*', $limit = "0,$num", $order = 'inputtime desc'); foreach ($result as $arr){ if(substr($arr['url'],0,1)=='/'){ $url = htmlspecialchars(strip_tags($domain.$arr['url'])); }else { $url = htmlspecialchars(strip_tags($arr['url'])); } $hit_r = $hits_db->get_one(array('hitsid'=>'c-'.$modelid.'-'.$arr['id'])); if($hit_r['views']>1000) $content_priority = 0.9; $smi = $this->google_sitemap_item($url, $today, $content_changefreq, $content_priority);//推荐文件 $this->add_item2($smi); } } $sm_file = $dir.'sitemaps.xml'; if($this->build($sm_file)){ showmessage(L('create_success'), HTTP_REFERER); } } } //这个地方自己设定,catids是个数组, $request = array( 'tabletype'=>'phpcmstables', 'content_priority'=>'0.7', 'content_changefreq'=>'weekly',//daily,monthly…… 'num'=>'20', 'mark'=>'1', 'catids'=>range(6,17), 'time'=>'40', 'email'=>'phpcms@phpcms.cn', 'baidunum'=>'20', ); //当然你可以通过外部传递参数,修改$request的值 $maps = new gbsitemap(); $maps->set($request); ?>
shell中
crontab -e
*/5 * * * *
相关推荐
本文详细介绍了如何在PHPCMS V9环境下,实现网站全站Sitemaps的生成代码,并通过服务器端脚本定时更新这些Sitemaps。Sitemap是搜索引擎优化(SEO)的重要组成部分,它为搜索引擎提供了网站内容的索引,有助于网站...
1基于蓝牙的项目开发--蓝牙温度监测器.docx
AppDynamics:性能瓶颈识别与优化
xtrabackup银河麒麟v10rpm安装包
2024年全球产品经理大会(脱敏)PPT合集,共34份。 1、AI 原生产品设计的 7 个反共识 2、AI 时代的策略产品与内容社区推荐实践 3、AI时代的用户界面设计 4、AI智能陪练:大模型赋能销售成长 5、AI浪潮中的应用主义者 6、AI驱动下的B端产品的思考与创新 7、AI驱动业务增长的探索与实践 8、Al Native 生产力工具的发展、价值与商业落地 9、B端产品设计避坑指南 10、GenAl驱动的xGen电商AI平台产品实践与思考 11、Kwaipilot 在快手的落地实践 12、OPPO AI的探索新交互到新生态 13、RPA + AI打造大模型驱动的领先数字员工 14、产品AI化重塑的思考与实践 15、产品分析:通过关键指标助力团队与企业成功 16、从RPA到Al Agent,高价值、可落地的智能助手 17、从流量运营到AI驱动的机器增长 18、做穿越时代的产品 19、创造好工具,创造世界一流产品力 20、医疗健康场景的大模型产品探索 21、即时零售柔性供应链体系建设与AIGC在零售数字化的探索 22、向量数据库的出海实践与未来展望 23、大模型在B端落地思考实践
基于物联网技术的停车场智能管理系统设计用户有单独APP
Adobe XD:AdobeXD高级技巧与最佳实践.docx
ARKit(iOS的增强现实):ARKit的多人AR场景实现
1python自动化脚本.docx
河北省、市、区县及街镇可编辑SVG图
金融工程之量化交易算法:均值回归:时间序列分析与预测.docx
技术资料分享ADV7123非常好的技术资料.zip
Sawmill_cn.ppt
使用LabVIEW输入数字n,然后计算n的阶乘
1无人值守灌溉系统--stm.docx
金融工程之量化交易算法:动量交易:金融数据获取与处理.docx
基于SSM的毕业设计源码
头像图片调试使用用来调试
GITS_sawmill8.5.8.1_x64_linux-ubuntu11.tar.gz
Newspaper 是一个专为新闻、杂志和内容丰富网站设计的 WordPress 主题。它非常适合博客、在线出版和内容展示,具备多种强大功能。以下是 Newspaper 的主要特点: 响应式设计:确保网站在各种设备上(手机、平板、桌面)都能良好显示,优化用户体验。 丰富的预建模板:提供多个专业设计的预建布局和页面模板,用户可以快速导入并根据需求进行修改。 强大的页面构建器:内置的 TagDiv Composer 允许用户通过拖放功能轻松创建和自定义页面,无需编写代码。 SEO 优化:主题经过优化,有助于提升网站在搜索引擎中的排名,增加流量。 多种内容展示选项:提供多种文章格式和布局选项,如网格、列表、视频和画廊,方便展示不同类型的内容。 社交媒体集成:支持社交媒体分享功能,帮助用户轻松与观众互动并提高网站的曝光度。 实时自定义:支持实时预览功能,用户可以在更改设置时即时查看效果。 持续更新和支持:定期更新主题,确保用户获得最新功能和安全性,同时提供专业的技术支持。