织梦dede网址导航二次开发模板如何修改?

99ANYc3cd6
预计阅读时长 30 分钟
位置: 首页 织梦建站 正文
  1. 理解DedeCMS网址导航的数据结构
  2. 准备和规划新模板
  3. 制作模板文件
  4. 后台设置与调用
  5. 进阶开发技巧

第一步:理解DedeCMS网址导航的数据结构

在开始制作模板之前,你必须清楚后台的数据是如何存储的,网址导航的核心数据表是 #@nav

织梦dede网址导航二次开发模板
(图片来源网络,侵删)

我们可以进入DedeCMS后台 -> 核心 -> 内容模型管理 -> 网址导航 -> 字段管理,查看所有可用的字段。

核心字段解释:

  • id: 导航项的唯一ID。
  • typename: 导航分类的名称(常用网站、娱乐、学习等)。
  • reid: 父级分类ID,如果为0,则表示这是一个顶级分类。
  • typenamerule: 分类页面的命名规则,通常我们不需要在模板中直接使用它。
  • namerule2: 单个网址页面的命名规则,同样在模板中较少直接使用。
  • typedir: 这是最重要的字段之一,它定义了分类在网站上的访问路径,a/gongju/
  • seotitle: 分类页面的SEO标题。
  • description: 分类页面的描述。
  • keywords: 分类页面的关键词。 表 (#@nav_datadede_addon17 等,根据你的模型ID不同而不同):**

这个表存储了具体的网址信息。

  • aid: 关联到 #@nav 表中的 id
  • typeid: 导航分类ID,关联到 #@nav 表中的 id
  • url: 网站的链接地址。
  • webname: 网站名称。
  • msg: 网站简介。
  • logo: 网站Logo图片地址。
  • sortrank: 排序权重,数字越大越靠前。
  • 分类:由 #@nav 表管理,reid=0 的是顶级分类。
  • 网址:由 #@nav_data 表管理,通过 typeid 字段归属到某个分类。

第二步:准备和规划新模板

在动手写代码前,先在纸上或设计软件中规划好你的网址导航首页长什么样。

织梦dede网址导航二次开发模板
(图片来源网络,侵删)

规划示例:

  1. 页面头部:网站Logo、搜索框、用户登录入口。
  2. 主导航栏:首页、关于我们、联系方式等。
  3. Banner区:一张全宽的轮播图。
  4. 分类展示区:这是核心部分。
    • 采用什么布局?是传统的“一列分类+网址列表”,还是流行的“卡片式”或“瀑布流”?
    • 每个分类区块如何设计?分类图标、分类名称、查看更多按钮。
    • 网址列表如何展示?是纯文字列表,还是带Logo的图标列表?
  5. 页脚:版权信息、备案号、友情链接等。

文件准备:

将你的设计稿切图,得到Logo、Banner图、图标等素材,并上传到DedeCMS的 images 目录或自定义目录。


第三步:制作模板文件

DedeCMS的模板文件存放在 /templets/default/ 目录下,为了不覆盖默认模板,建议你新建一个文件夹,/templets/your_template_name/

织梦dede网址导航二次开发模板
(图片来源网络,侵删)

我们将制作两个核心模板文件:

  1. 首页模板index.htm
  2. 列表页模板list_type.htm (用于显示某个分类下的所有网址)

首页模板 (index.htm)

这个模板用于显示所有顶级分类及其下的网址。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">{dede:global.cfg_webname/} - {dede:global.cfg_description/}</title>
    <meta name="keywords" content="{dede:global.cfg_keywords/}">
    <meta name="description" content="{dede:global.cfg_description/}">
    <!-- 引入CSS文件,建议新建一个style.css -->
    <link rel="stylesheet" href="{dede:global.cfg_cmspath/}/templets/your_template_name/css/style.css">
    {dede:global.cfg_webstyle/}
</head>
<body>
    <!-- 头部 -->
    {dede:include filename="head.htm"/}
    <!-- Banner区,可以调用一个自定义的单页内容或直接写死 -->
    <div class="banner">
        <img src="{dede:global.cfg_cmspath/}/templets/your_template/images/banner.jpg" alt="网站导航Banner">
    </div>
    <!-- 核心内容区:循环调用顶级分类 -->
    <div class="main-content">
        {dede:channel type='top' currentstyle='
            <div class="category-box current">
                <h2><a href="[field:typelink/]">[field:typename/]</a></h2>
                [field:content /]
            </div>
        '}
        <div class="category-box">
            <h2><a href="[field:typelink/]">[field:typename/]</a></h2>
            <!-- [field:content /] 是一个关键,它会在后台“分类管理”-“分类内容”里填写 -->
            {dede:sql sql="SELECT * FROM `#@nav_data` WHERE typeid = '~id~' ORDER BY sortrank DESC limit 10"}
            <div class="site-item">
                <a href="[field:url/]" target="_blank">
                    <img src="[field:logo/]" alt="[field:webname/]">
                    <span>[field:webname/]</span>
                </a>
            </div>
            {/dede:sql}
        </div>
        {/dede:channel}
    </div>
    <!-- 页脚 -->
    {dede:include filename="foot.htm"/}
    <!-- 引入JS文件 -->
    <script src="{dede:global.cfg_cmspath/}/templets/your_template_name/js/jquery.min.js"></script>
    <script src="{dede:global.cfg_cmspath/}/templets/your_template_name/js/main.js"></script>
</body>
</html>

代码解析:

  • {dede:channel type='top' ...}: 这是核心标签。type='top' 表示只调用顶级分类。
  • currentstyle: 当前分类的样式,如果想让当前分类高亮,可以用这个。
  • [field:typelink/]: 分类链接。
  • [field:typename/]: 分类名称。
  • [field:content /]: 这是一个非常重要的技巧! 在后台的“网址导航” -> “分类管理”里,编辑每个顶级分类时,你可以在“分类内容”这个文本框里填写任意HTML代码,比如分类的描述、广告语等,这样,首页模板就可以直接调用出来了,非常灵活。
  • {dede:sql ...}: 这是一个万能的SQL查询标签,我们用它来根据当前分类的ID (~id~ 会被自动替换为分类ID) 去查询 #@nav_data 表,获取该分类下的网址。
  • ORDER BY sortrank DESC limit 10: 按后台设置的排序权重降序排列,并只显示前10个。

列表页模板 (list_type.htm)

这个模板用于显示单个分类下的所有网址,通常更简洁。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">{dede:field.seotitle/}_{dede:global.cfg_webname/}</title>
    <meta name="keywords" content="{dede:field.keywords/}">
    <meta name="description" content="{dede:field.description/}">
    <link rel="stylesheet" href="{dede:global.cfg_cmspath/}/templets/your_template_name/css/style.css">
</head>
<body>
    <!-- 头部 -->
    {dede:include filename="head.htm"/}
    <!-- 面包屑导航 -->
    <div class="breadcrumb">
        <a href="{dede:global.cfg_cmspath/}">首页</a> > {dede:field name='position' runphp='yes'}
        @me = str_replace(' > ', ' &raquo; ', @me);
        {/dede:field}
    </div>
    <!-- 列表内容区 -->
    <div class="list-container">
        <h1 class="category-title">{dede:field.typename/}</h1>
        <p class="category-desc">{dede:field.description/}</p>
        <div class="site-list">
            {dede:sql sql="SELECT * FROM `#@nav_data` WHERE typeid = '~typeid~' ORDER BY sortrank ASC"}
            <div class="site-card">
                <a href="[field:url/]" target="_blank" class="site-link">
                    <img src="[field:logo/]" alt="[field:webname/]" class="site-logo">
                    <div class="site-info">
                        <h3>[field:webname/]</h3>
                        <p>[field:msg/]</p>
                    </div>
                </a>
            </div>
            {/dede:sql}
        </div>
    </div>
    <!-- 页脚 -->
    {dede:include filename="foot.htm"/}
    <script src="{dede:global.cfg_cmspath/}/templets/your_template_name/js/jquery.min.js"></script>
</body>
</html>

代码解析:

  • {dede:field.seotitle/}, {dede:field.keywords/}, {dede:field.description/}: 调用当前分类的SEO信息。
  • {dede:field name='position'}: 调用面包屑导航。
  • {dede:field.typename/}, {dede:field.description/}: 调用当前分类的名称和描述。
  • {dede:sql sql="SELECT * FROM#@nav_dataWHERE typeid = '~typeid~' ...}: 和首页类似,这里直接用 ~typeid~ 获取当前分类ID,查询该分类下的所有网址。

第四步:后台设置与调用

  1. 上传模板:将你制作好的 index.htm, list_type.htm, head.htm, foot.htm 以及 cssjs 文件上传到 /templets/your_template_name/ 目录下。
  2. 设置默认模板
    • 进入DedeCMS后台 -> 模板 -> 默认模板管理
    • 在“网址导航”模型下,找到“首页模板”、“列表页模板”等。
    • 分别选择你刚刚上传的 index.htmlist_type.htm
  3. 添加分类和网址
    • 进入“网址导航” -> “分类管理”,添加你的顶级分类和子分类。
    • 在每个分类的“分类内容”里填写你为首页准备的HTML代码。
    • 进入“网址管理”,添加具体的网址,并选择它们所属的分类。
  4. 生成网站

    进入“生成” -> “一键更新网站”,选择“更新主页”、“更新栏目页”和“更新文档页”,然后开始生成。

你的新网址导航模板应该就能正常显示了。


第五步:进阶开发技巧

  1. 使用自定义模型和字段

    • 默认的字段可能不够用(比如需要添加“网站标签”、“站长QQ”等)。
    • 你可以在“内容模型管理” -> “网址导航” -> “字段管理”中添加新的字段,然后在模板中通过 {dede:field.新字段名/} 来调用。
  2. 使用arclist标签

    • 对于一些简单的调用,arclist 标签比 sql 标签更方便,尤其是在需要分页时。
    • 调用某个分类下的网址(假设分类ID是5):
      {dede:arclist typeid='5' channelid='17' row='20' orderby='sortrank'}
      <a href="[field:url/]" target="_blank">[field:webname/]</a>
      {/dede:arclist}
      • typeid='5': 指定分类ID。
      • channelid='17': 非常关键! channelid 是网址导航模型的ID,你可以在“内容模型管理”里看到网址导航模型的ID,通常是17或更大,不指定则调用不了。
      • row='20': 显示20条。
      • orderby='sortrank': 按排序权重。
  3. 增加交互功能

    • 搜索功能:可以新建一个搜索页面模板,使用 {dede:global name='keyword' function='RemoveXSS(@me)'/} 获取搜索关键词,然后用 sql 标签在 #@nav_data 表的 webnamemsg 字段中进行模糊查询。
    • 提交网址:制作一个提交页面,使用DedeCMS的自定义表单功能,让用户填写网站信息,后台审核后再手动添加到网址列表中。

通过以上步骤,你就可以从零开始,为织梦DedeCMS打造一个功能完善、外观精美的网址导航网站了,祝你开发顺利!

-- 展开阅读全文 --
头像
C语言GetWindowText如何获取窗口文本?
« 上一篇 12-10
织梦如何用SQL将文章删除到回收站?
下一篇 » 12-10

相关文章

取消
微信二维码
支付宝二维码

目录[+]