源码论坛公告:本站是一个交流学习建站资源的社区论坛,旨在交流学习源码脚本等资源技术,欢迎大家投稿发言! 【点击此处将锦尚放在桌面

源码论坛,商业源码下载,尽在锦尚中国商业源码论坛

 找回密码
 会员注册

QQ登录

只需一步,快速开始

查看: 4309|回复: 0
打印 上一主题 下一主题

[Discuz教程] Discuz!自动生成全站网站地图sitemap.xml文件的php代码

[复制链接]

3102

主题

3503

帖子

13万

金币

超级版主

Rank: 8Rank: 8

积分
271670
跳转到指定楼层
1#
发表于 2023-2-16 22:16:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

大家都知道sitemap.xml网站地图可以主动向百度等搜索引擎提交网站内容以便提高网站的收录,对于Discuz!来说,每天可能都会发布新的帖子和文章,如果使用手动生成站点地图文件的话,会非常的麻烦,现在教大家一个全自动生成的方法。可以同时生成sitemap.xml和sitemap.txt两种类型的文件。

1、创建一个cron_sitemap.php文件,代码如下:

  1. <?php
  2. /*
  3. * $ 自动生成网站地图sitemap.xml
  4. * 1、discuz后台添加定时任务:后台–工具–计划任务–新增,名字随便,提交
  5. * 2、然后编辑,任务脚本:cron_sitemap.php
  6. */
  7. if(!defined('IN_DISCUZ')) {
  8.         exit('Access Denied');
  9. }
  10. $cfg_updateperi='60';//协议文件更新周期的上限,单位为分钟
  11. $CHARSET='gbk';// 选择编码方式:utf-8 or gbk
  12. /******************************************自动生成网站地图****************************************************/
  13. $txtContent = '';
  14. $sitemap="<?xml version="1.0" encoding="UTF-8"?>\n";
  15. $sitemap.="<urlset\n";
  16. $sitemap.="xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> \n";
  17.         //1.文章
  18.         $queryArticle = DB::query("SELECT aid FROM ".DB::table('portal_article_title').' ORDER BY aid DESC');
  19.         while($articleaid = DB::fetch($queryArticle)){
  20.             $link = "{$_G[siteurl]}article-{$articleaid['aid']}-1.html";//注意静态规则
  21.                 $txtContent .= $link."\n";
  22.                 $t=time();
  23.                 $riqi=date("Y-m-d",$t);
  24.                 $priority=rand(1,10)/10;
  25. $sitemap.="<url>\n";
  26. $sitemap.="<loc>$link</loc>\n";
  27. $sitemap.="<priority>$priority</priority>\n";
  28. $sitemap.="<lastmod>$riqi</lastmod>\n";
  29. $sitemap.="<changefreq>weekly</changefreq>\n";
  30. $sitemap.="</url>\n";
  31.     }
  32.         //2.帖子
  33.     $queryThread = DB::query("SELECT tid FROM ".DB::table('forum_thread').' WHERE displayorder=0 ORDER BY tid DESC');
  34.     while($threadfid = DB::fetch($queryThread)){
  35.                 $link = "{$_G[siteurl]}thread-{$threadfid['tid']}-1-1.html";//注意静态规则
  36.                 $txtContent .= $link."\n";
  37.                 $t=time();
  38.                 $riqi=date("Y-m-d",$t);
  39.                 $priority=rand(1,10)/10;
  40. $sitemap.="<url>\n";
  41. $sitemap.="<loc>$link</loc>\n";
  42. $sitemap.="<priority>$priority</priority>\n";
  43. $sitemap.="<lastmod>$riqi</lastmod>\n";
  44. $sitemap.="<changefreq>weekly</changefreq>\n";
  45. $sitemap.="</url>\n";
  46.     }
  47.     $sitemap .= "</urlset>\n";
  48.         //写入xml文件
  49.     $fp = fopen(DISCUZ_ROOT.'/sitemap.xml','w');
  50.     fwrite($fp,$sitemap);
  51.     fclose($fp);
  52.         //写入txt文件
  53.         $fopen = fopen(DISCUZ_ROOT.'/sitemap.txt',"w+");
  54.     fwrite($fopen,$txtContent);
  55.     fclose($fopen);
  56. ?>
复制代码

2、将cron_sitemap.php上传到source/include/cron目录

3、进入discuz!后台  → 工具   → 计划任务,添加如下计划:



4、添加好后,记得把可用按钮勾选上



5、任务执行后,会在根目录同时生成sitemap.txt和sitemap.xml两个文件

好了,这就是锦尚中国关于Discuz!自动生成全站网站地图sitemap.xml文件的php代码,更多内容可以搜索源码论坛获得,感谢大家的支持与厚爱!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

锦尚中国源码论坛

聚合标签|锦尚中国,为中国网站设计添动力 ( 鲁ICP备09033200号 ) |网站地图

GMT+8, 2024-5-2 22:36 , Processed in 0.027014 second(s), 16 queries .

带宽由 锦尚数据 提供 专业的数据中心

© 锦尚中国源码论坛 52jscn Inc. 非法入侵必将受到法律制裁 法律顾问:IT法律网 & 褚福省律师 锦尚爱心 版权申诉 版权与免责声明