|
一、计划任务脚本方案(推荐)- 创建脚本文件
在source/include/cron/目录新建cron_sitemap.php文件,写入以下核心代码:
- <?php
- if(!defined('IN_DISCUZ')) {
- exit('Access Denied');
- }
- $cfg_updateperi = '1440'; // 更新周期(分钟),建议每日更新
- $web_root = $_G['siteurl'];
- $CHARSET = 'utf-8'; // 根据论坛编码选择
- $sitemap = <<<XML
- <?xml version="1.0" encoding="UTF-8"?>
- <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
- XML;
- // 生成门户文章链接
- $query = DB::query("SELECT aid,dateline FROM ".DB::table('portal_article_title')." ORDER BY dateline DESC LIMIT 5000");
- while($row = DB::fetch($query)) {
- $sitemap .= sprintf('
- <url>
- <loc>%sarticle-%d-1.html</loc>
- <lastmod>%s</lastmod>
- <changefreq>weekly</changefreq>
- <priority>0.8</priority>
- </url>',
- $web_root,
- $row['aid'],
- date('Y-m-d', $row['dateline'])
- );
- }
- // 生成论坛帖子链接
- $query = DB::query("SELECT tid,dateline FROM ".DB::table('forum_thread')." WHERE displayorder>=0 ORDER BY dateline DESC LIMIT 5000");
- while($row = DB::fetch($query)) {
- $sitemap .= sprintf('
- <url>
- <loc>%sthread-%d-1-1.html</loc>
- <lastmod>%s</lastmod>
- <changefreq>daily</changefreq>
- <priority>0.6</priority>
- </url>',
- $web_root,
- $row['tid'],
- date('Y-m-d', $row['dateline'])
- );
- }
- $sitemap .= "\n</urlset>";
- // 写入文件
- 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,修改:
- // 原RSS输出改为XML格式
- header('Content-type: application/xml; charset='.$charset);
- // 替换内容生成逻辑为sitemap标准
复制代码
- 访问触发
通过访问域名/portal_sitemap.php手动生成地图文件
最佳实践建议- 优先采用计划任务方案,稳定性最佳
- 地图文件应包含:首页、版块列表、最新50页主题
- 验证工具:通过Google Search Console提交检测
|
|