开启辅助访问
 找回密码
 立即注册

QQ登录

只需一步,快速开始

网站后端

关注:0

所属分类: 网站 网站后端

查看: 59|回复: 0

Discuz论坛地图生成方案

[复制链接] [是否收录]

31

主题

3

回帖

200

积分

管理员

积分
200
发表于 2025-5-23 21:23:35 | 显示全部楼层 |阅读模式
一、计划任务脚本方案(推荐)
  • 创建脚本文件
    在source/include/cron/目录新建cron_sitemap.php文件,写入以下核心代码:

    1. <?php
    2. if(!defined('IN_DISCUZ')) {
    3.     exit('Access Denied');
    4. }

    5. $cfg_updateperi = '1440'; // 更新周期(分钟),建议每日更新
    6. $web_root = $_G['siteurl'];
    7. $CHARSET = 'utf-8'; // 根据论坛编码选择

    8. $sitemap = <<<XML
    9. <?xml version="1.0" encoding="UTF-8"?>
    10. <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    11. XML;

    12. // 生成门户文章链接
    13. $query = DB::query("SELECT aid,dateline FROM ".DB::table('portal_article_title')." ORDER BY dateline DESC LIMIT 5000");
    14. while($row = DB::fetch($query)) {
    15.     $sitemap .= sprintf('
    16.     <url>
    17.         <loc>%sarticle-%d-1.html</loc>
    18.         <lastmod>%s</lastmod>
    19.         <changefreq>weekly</changefreq>
    20.         <priority>0.8</priority>
    21.     </url>',
    22.     $web_root,
    23.     $row['aid'],
    24.     date('Y-m-d', $row['dateline'])
    25.     );
    26. }

    27. // 生成论坛帖子链接
    28. $query = DB::query("SELECT tid,dateline FROM ".DB::table('forum_thread')." WHERE displayorder>=0 ORDER BY dateline DESC LIMIT 5000");
    29. while($row = DB::fetch($query)) {
    30.     $sitemap .= sprintf('
    31.     <url>
    32.         <loc>%sthread-%d-1-1.html</loc>
    33.         <lastmod>%s</lastmod>
    34.         <changefreq>daily</changefreq>
    35.         <priority>0.6</priority>
    36.     </url>',
    37.     $web_root,
    38.     $row['tid'],
    39.     date('Y-m-d', $row['dateline'])
    40.     );
    41. }

    42. $sitemap .= "\n</urlset>";

    43. // 写入文件
    44. file_put_contents(DISCUZ_ROOT.'/sitemap.xml', $sitemap);
    复制代码

  • 配置计划任务
    后台进入"工具→计划任务",添加新任务:
    • 任务脚本:选择cron_sitemap.php
    • 执行频率:建议每日1次
    • 日志记录:开启
二、插件安装方案
  • 插件选择
    推荐安装应用中心的「SEO优化地图生成器」或「DZ官方地图插件」,安装后需配置:
    • 包含板块:选择需要收录的版块
    • 更新频率:设置自动更新间隔
    • 优先级配置:首页设为1.0,版块页0.8,帖子页0.6
  • 验证生效
    安装完成后访问域名/sitemap.xml检查输出格式是否符合标准
三、手动修改方案(技术向)
  • 文件改造
    复制source/module/portal/portal_rss.php重命名为portal_sitemap.php,修改:
    1. // 原RSS输出改为XML格式
    2. header('Content-type: application/xml; charset='.$charset);
    3. // 替换内容生成逻辑为sitemap标准
    复制代码

  • 访问触发
    通过访问域名/portal_sitemap.php手动生成地图文件
最佳实践建议
  • 优先采用计划任务方案,稳定性最佳
  • 地图文件应包含:首页、版块列表、最新50页主题
  • 验证工具:通过Google Search Console提交检测

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录 发布 快速回复 返回顶部 返回列表