织梦生成sitemap,具体如何操作?

99ANYc3cd6
预计阅读时长 30 分钟
位置: 首页 织梦建站 正文

织梦本身没有自带一个一键生成标准XML Sitemap的功能,但我们可以通过多种方法来实现,下面我将为你介绍三种最常用、最有效的方法,从简单到复杂,你可以根据自己的技术选择最适合的一种。

织梦生成sitemap
(图片来源网络,侵删)

使用现成的插件(最简单,推荐新手)

这是最简单、最快捷的方法,适合不熟悉代码修改的用户,你只需要下载插件,上传到后台安装即可。

推荐插件: DedeCMS Sitemap 生成插件 (有多种版本,选择一个评价好的即可)

操作步骤:

  1. 下载插件:

    织梦生成sitemap
    (图片来源网络,侵删)
    • 访问织梦官方论坛、Dede吧或一些知名的织梦资源网站(如“织梦58”、“源码爱好者”等)。
    • 搜索关键词:“织梦 sitemap 插件” 或 “DedeCMS Sitemap 生成器”。
    • 下载一个评价好、下载量高的插件包,通常是一个 .zip 文件。
  2. 上传并安装:

    • 登录你的织梦后台(/dede/)。
    • 在左侧菜单栏找到 “系统” -> “插件管理” -> “上传新插件”
    • 点击“浏览”,选择你刚刚下载的插件压缩包,然后点击“上传安装”。
    • 后台会自动解压并安装插件。
  3. 生成Sitemap:

    • 安装成功后,通常会在后台的 “系统”管理” 菜单下出现一个与Sitemap相关的选项,Sitemap生成”。
    • 进入该页面,插件通常会提供生成“首页Sitemap”和“栏目Sitemap”的选项。
    • 点击“生成”按钮,系统会自动扫描你的网站,并生成 sitemap.xmlsitemap.html 文件。
    • 文件位置: 这些文件通常会被生成在你的网站根目录()下。
  4. 提交到搜索引擎:

    • 生成后,访问 http://你的域名.com/sitemap.xml 确认文件可以正常打开。
    • 登录 百度搜索资源平台Google Search Console
    • 在“Sitemap”或“站点地图”部分,提交你的Sitemap地址,http://你的域名.com/sitemap.xml

优点:

织梦生成sitemap
(图片来源网络,侵删)
  • 操作简单,无需修改代码。
  • 通常有详细的安装说明。
  • 功能稳定,更新及时。

缺点:

  • 可能与特定版本的织梦不兼容。
  • 插件可能带有广告或不必要的功能。

手动修改代码生成(最灵活,推荐有一定基础的用户)

这种方法的核心是修改织梦的模板文件,让系统在更新内容时自动生成Sitemap,这是目前最主流和灵活的方式。

我们将创建两个文件:sitemap.xml (用于搜索引擎) 和 sitemap.html (用于用户浏览)。

第1步:创建模板文件

  1. 在你的织梦模板目录(通常是 /templets/default/ 或你自定义的模板目录)下,创建一个新文件夹,special
  2. special 文件夹里创建两个文件:
    • sitemap.xml
    • sitemap.html

sitemap.xml 文件内容:

{dede:global.cfg_basehost/}
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>{dede:global.cfg_basehost/}/</loc>
        <lastmod>{dede:arclist row=1 orderby=pubdate}
            [field:pubdate function=strftime('%Y-%m-%d',@me)/]
        {/dede:arclist}</lastmod>
        <changefreq>daily</changefreq>
        <priority>1.0</priority>
    </url>
    {dede:channelartlist typeid='top' row='100'}
        <url>
            <loc>{dede:global.cfg_basehost/}{dede:field name='typeurl'/}</loc>
            <lastmod>{dede:arclist row=1 orderby=pubdate}
                [field:pubdate function=strftime('%Y-%m-%d',@me)/]
            {/dede:arclist}</lastmod>
            <changefreq>daily</changefreq>
            <priority>0.8</priority>
        </url>
        {dede:channel type='son' noself='yes'}
        <url>
            <loc>{dede:global.cfg_basehost/}{dede:field name='typeurl'/}</loc>
            <lastmod>{dede:arclist row=1 orderby=pubdate}
                [field:pubdate function=strftime('%Y-%m-%d',@me)/]
            {/dede:arclist}</lastmod>
            <changefreq>daily</changefreq>
            <priority>0.7</priority>
        </url>
        {/dede:channel}
    {/dede:channelartlist}
    {dede:arclist row='5000' orderby='pubdate' typeid='0'}
    <url>
        <loc>{dede:global.cfg_basehost/}{dede:field name='arcurl'/}</loc>
        <lastmod>[field:pubdate function=strftime('%Y-%m-%d',@me)/]</lastmod>
        <changefreq>monthly</changefreq>
        <priority>0.6</priority>
    </url>
    {/dede:arclist}
</urlset>

sitemap.html 文件内容:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">网站地图 - {dede:global.cfg_webname/}</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        body { font-family: Arial, sans-serif; line-height: 1.6; margin: 0; padding: 20px; background-color: #f4f4f4; }
        .container { max-width: 800px; margin: 0 auto; background: #fff; padding: 20px; border-radius: 5px; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
        h1 { color: #333; text-align: center; }
        ul { list-style-type: none; padding: 0; }
        li { background: #f9f9f9; margin-bottom: 5px; padding: 10px; border-left: 3px solid #007bff; }
        a { color: #007bff; text-decoration: none; }
        a:hover { text-decoration: underline; }
        .footer { text-align: center; margin-top: 30px; color: #777; font-size: 0.9em; }
    </style>
</head>
<body>
    <div class="container">
        <h1>网站地图 - {dede:global.cfg_webname/}</h1>
        <p><a href="{dede:global.cfg_basehost/}">返回首页</a></p>
        <h2>主要栏目</h2>
        <ul>
            {dede:channelartlist typeid='top' row='100'}
                <li><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></li>
                {dede:channel type='son' noself='yes'}
                <li>&nbsp;&nbsp;<a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></li>
                {/dede:channel}
            {/dede:channelartlist}
        </ul>
        <h2>最新文章</h2>
        <ul>
            {dede:arclist row='100' orderby='pubdate' titlelen='50'}
            <li><a href="[field:arcurl/]">[field:title/]</a></li>
            {/dede:arclist}
        </ul>
        <div class="footer">
            <p>本地图由织梦CMS自动生成</p>
        </div>
    </div>
</body>
</html>

第2步:修改织梦核心文件以自动更新

为了让Sitemap在每次更新内容时都自动更新,我们需要修改织梦的发布文件。

  1. 打开织梦的核心文件:/dede/inc/inc_archives_functions.php
  2. 在文件末尾,?> 之前,添加以下PHP代码:
/**
 * 生成网站地图
 */
function CreateSitemap()
{
    require_once(DEDEINC."/arc.partview.class.php");
    $dsql = new DedeSql(false);
    // 获取网站根目录
    $murl = $GLOBALS['cfg_basehost'];
    // 创建XML Sitemap
    $tmpfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir'].'/special/sitemap.xml';
    $dtp = new PartView();
    $dtp->SetTemplet($tmpfile);
    $dtp->SaveToHtml($GLOBALS['cfg_basedir'].'/sitemap.xml');
    // 创建HTML Sitemap
    $tmpfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir'].'/special/sitemap.html';
    $dtp->SetTemplet($tmpfile);
    $dtp->SaveToHtml($GLOBALS['cfg_basedir'].'/sitemap.html');
    // 关闭数据库连接
    $dsql->Close();
}
  1. 我们需要在发布文章、更新栏目等操作后调用这个函数。

    • 修改文章发布/编辑文件: 打开 /dede/archives_add.php/dede/archives_edit.php
    • 在文件末尾,在 ShowMsg() 函数之前,添加一行代码:
      CreateSitemap();
    • 修改栏目更新文件: 打开 /dede/catalog_add.php/dede/catalog_edit.php
    • 同样,在文件末尾,在 ShowMsg() 函数之前,添加一行代码:
      CreateSitemap();
  2. 清空缓存后测试:

    • 到后台 “系统” -> “系统设置” -> “一键更新网站”,选择“更新所有”并执行。
    • 执行成功后,检查你的网站根目录,看看是否生成了 sitemap.xmlsitemap.html 文件。
    • 访问这两个文件,确认内容正确。

优点:

  • 完全自定义,灵活控制内容。
  • 自动更新,一劳永逸。
  • 不依赖第三方插件,更安全。

缺点:

  • 需要修改核心文件,有一定风险(操作前请备份!)。
  • 需要基本的PHP和织梦模板知识。

使用第三方Sitemap生成工具(最通用)

如果你不想修改织梦,也不想安装插件,可以使用独立的Sitemap生成工具。

推荐工具:

  • 在线工具: XML-Sitemaps.com (可以输入网址,自动生成并下载)
  • 桌面软件: Screaming Frog SEO Spider (功能强大,免费版有页面数限制)

操作步骤:

  1. 选择工具: 访问 XML-Sitemaps.com
  2. 输入网址: 在输入框中填入你的网站域名,点击“Start”。
  3. 等待扫描: 工具会开始爬取你的网站,分析所有页面,这个过程可能需要几分钟到几十分钟,取决于你网站的大小。
  4. 下载Sitemap: 扫描完成后,网站会提供一个下载链接,你可以直接下载 sitemap.xml 文件。
  5. 上传并提交:
    • 使用FTP工具将下载的 sitemap.xml 文件上传到你的网站根目录。
    • 登录百度和Google的站长平台,提交这个Sitemap。

优点:

  • 无需接触网站后台,非常安全。
  • 生成速度快,功能强大。
  • 适合任何网站,不限于CMS。

缺点:

  • 无法自动更新。 每当你网站有新内容时,都需要手动重新生成并上传一次Sitemap。

总结与建议

方法 优点 缺点 推荐人群
插件法 简单快速,零代码 可能不兼容,有风险 新手用户
修改代码法 灵活、自动更新、一劳永逸 需要修改核心文件,有风险 有一定技术基础的用户(最推荐)
第三方工具法 安全,通用,无需后台 无法自动更新,需要手动操作 懒得折腾或网站内容更新不频繁的用户

对于绝大多数织梦用户来说,方法二(手动修改代码) 是最佳选择,虽然前期需要花一点时间设置,但一旦完成,你的网站地图就会在每次更新内容时自动保持最新,对SEO非常有利。

最后的重要提醒:

  • 备份!备份!备份! 在修改任何核心文件之前,务必备份你的网站文件和数据库。
  • 权限: 确保网站目录有写入权限,否则无法生成文件。
  • 提交: 生成Sitemap后,一定要记得提交到百度和Google的站长平台,否则搜索引擎不会知道它的存在。
-- 展开阅读全文 --
头像
dede列表页如何按ID排序?
« 上一篇 02-12
MATLAB如何高效转化为C语言?
下一篇 » 02-12
取消
微信二维码
支付宝二维码

目录[+]