dede主栏目如何显示在主页?

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 DEDE建站 正文

使用系统内置的“栏目导航”标签(最简单、最推荐)

这是 DedeCMS 设计之初就考虑好的标准方法,最简单,也最不容易出错。

dede主栏目在主页上显示
(图片来源网络,侵删)

适用场景:只需要在首页顶部显示一级栏目(主栏目),并且不需要复杂的样式。

操作步骤

  1. 登录后台:使用管理员账号登录您的 DedeCMS 后台。

  2. 进入模板管理:在左侧菜单栏中,找到 模板 -> 模板管理

    dede主栏目在主页上显示
    (图片来源网络,侵删)
  3. 选择首页模板:在模板列表中,找到您当前正在使用的首页模板文件(通常是 index.htm),点击右侧的 修改 按钮。

  4. 插入标签代码:在您希望显示栏目的位置(通常是 <header><nav> 标签内),插入以下 DedeCMS 标签代码:

    {dede:channel type='top' row='8'}
    <a href="[field:typelink/]">[field:typename/]</a>
    {/dede:channel}
  5. 保存并更新

    • 点击模板编辑器底部的 保存 按钮。
    • 返回到 DedeCMS 后台首页,在左侧菜单栏找到 生成 -> 更新主页HTML
    • 点击 更新主页HTML 按钮,等待生成完成。
  6. 查看效果:现在访问您的网站首页,应该就能看到主栏目了。

    dede主栏目在主页上显示
    (图片来源网络,侵删)

标签代码详解

  • {dede:channel type='top' row='8'}:这是调用栏目的核心标签。
    • type='top':这是关键参数,表示只调用顶级栏目(主栏目),如果省略这个参数,它会调用包括所有子栏目在内的所有栏目。
    • row='8':表示显示的栏目数量。'8' 是一个示例,您可以改成您想显示的数量,'10',如果想让所有主栏目都显示,可以去掉 row 参数。
  • [field:typelink/]:这是一个字段标签,用于输出栏目的完整链接地址https://www.yoursite.com/about/)。
  • [field:typename/]:这是一个字段标签,用于输出栏目的名称(“关于我们”)。
  • <a href="...">...</a>:这是标准的 HTML 链接标签,将栏目名称包裹起来,使其可以点击跳转。

自定义带样式的栏目导航(最灵活)

如果您需要对栏目导航进行更复杂的样式设计(比如添加当前栏目高亮、下拉菜单等),就需要对标签进行一些改造。

场景:希望栏目有特定的样式,并且希望当前所在的栏目能高亮显示。

操作步骤

  1. 登录后台并修改首页模板:同方法一的步骤 1、2、3。

  2. 插入自定义样式的代码

    <nav class="main-nav">
      <ul>
        {dede:channel type='top' row='8' currentstyle="<li class='active'><a href='~typelink~'>~typename~</a></li>"}
        <li><a href="[field:typelink/]">[field:typename/]</a></li>
        {/dede:channel}
      </ul>
    </nav>
  3. 代码解析

    • 我们给栏目加上了 <ul><li> 结构,这是制作导航菜单的标准做法,方便用 CSS 进行样式控制。

    • currentstyle="<li class='active'><a href='~typelink~'>~typename~</a></li>":这是一个非常强大的参数。

      • 它的作用是:如果当前页面(比如首页)是这个栏目,或者这个栏目的子栏目,那么就会使用 currentstyle 里的代码来代替默认的 <li> 代码。
      • ~typelink~~typename~currentstyle 专用的写法,代表栏目的链接和名称。
    • .active:这是一个自定义的 CSS 类名,您可以在网站的 CSS 文件中为这个类名添加样式,

      /* 在您的 CSS 文件中添加以下代码 */
      .main-nav ul li.active a {
        color: #ff0000; /* 文字颜色变为红色 */
        font-weight: bold; /* 字体加粗 */
      }
  4. 保存并更新主页:同方法一的步骤 5。


使用自由列表(适用于复杂逻辑)

如果您的主栏目显示逻辑比较复杂(只显示有特定属性的栏目,或者按特定顺序排序),可以使用“自由列表”功能。

场景:需要根据栏目的“发布文章数”或其他属性来筛选和排序主栏目。

操作步骤

  1. 登录后台

  2. 创建自由列表:在左侧菜单栏中,找到 核心 -> 自由列表

  3. 配置自由列表

    • 列表名称:随便起一个,首页主栏目导航”。

    • 按SQL语句查询:选择这个选项。

    • SQL语句:输入以下 SQL 语句,这个语句会从 dede_arctype 表(栏目表)中查询所有顶级栏目,并按排序字段 sortrank 排序。

      SELECT id,typename,typedir,isdefault,defaultname,namerule2,moresite,siteurl,sitepath
      FROM `dede_arctype`
      WHERE reid=0  -- reid=0 表示顶级栏目
      ORDER BY sortrank ASC -- 按后台设置的排序升序排列
    • 模板:选择 使用公共模板,然后在下方的模板代码框中输入显示代码,与方法二类似:

      <ul>
      {dede:sql sql='SELECT id,typename,typedir FROM `dede_arctype` WHERE reid=0 ORDER BY sortrank ASC'}
        <li><a href='/[field:typedir/]/'>[field:typename/]</a></li>
      {/dede:sql}
      </ul>

      注意:这里的 [field:typedir/] 返回的是相对路径,所以我们在前面加上了 来组成完整链接。

  4. 保存并生成:点击“下一步”或“保存”,然后生成这个自由列表。

  5. 在首页模板中调用

    • 打开您的首页模板 index.htm

    • 在需要显示栏目的位置,插入以下调用代码:

      {dede:freelist listid='这里填写自由列表的ID'/}
    • 如何找到 ID?在自由列表管理页面,鼠标悬停在你创建的列表名称上,浏览器左下角会显示链接,listid= 后面的数字就是 ID。

  6. 更新主页:同方法一的步骤 5。


常见问题排查 (FAQ)

Q1: 为什么栏目显示不出来?

  • 检查标签:确认标签 {dede:channel type='top'} 中的 type='top' 是否写对了。
  • 检查栏目属性:去后台的 栏目管理 -> 添加栏目修改栏目,检查一下该栏目是否为“最终栏目级”,如果不是顶级栏目,它就不会被 type='top' 调用。
  • 检查生成:是否执行了“更新主页HTML”的操作?DedeCMS 的更改必须重新生成才能生效。

Q2: 为什么栏目链接是错的,打不开页面?

  • 检查栏目目录:在后台修改栏目时,“栏目目录”是否设置正确?如果为空,它会自动根据栏目名称生成。
  • 检查链接标签:确保使用的是 [field:typelink/],它包含了网站的基础路径,是最稳定的写法,避免直接使用 [field:typedir/],因为它可能缺少网站根目录。

Q3: 我想显示栏目的图片(logo)怎么办?

  • 在后台的 栏目管理 -> 修改栏目 中,可以上传“栏目图片”。
  • 然后在模板标签中使用 [field:typedir/][field:typelink/] 来调用,
    {dede:channel type='top' row='8'}
    <a href="[field:typelink/]">
      <img src="[field:typedir/]/img/logo.png" alt="[field:typename/]">
      [field:typename/]
    </a>
    {/dede:channel}

    注意:这里假设您把每个栏目的 logo 图片都放在了各自栏目目录下的 img/logo.png,您需要根据您的实际文件路径进行调整。

方法 优点 缺点 适用场景
内置标签 最简单、最直接、官方支持 样式控制能力弱 快速在首页顶部添加一个简单的文字链接导航。
自定义样式 灵活、强大、可实现高亮等效果 需要一点 HTML/CSS 基础 制作网站主导航菜单,需要精美样式和交互效果。
自由列表 逻辑最强大、可按任意条件筛选 配置稍复杂、需要了解基本 SQL 需要根据特定条件(如文章数、点击量)来排序或筛选栏目。

对于绝大多数用户来说,方法一和方法二已经完全足够满足需求,从方法一开始尝试,如果需要更炫酷的效果,再升级到方法二。

-- 展开阅读全文 --
头像
dede列表页如何实现多种排序方式?
« 上一篇 今天
以下(不是c语言的特点.
下一篇 » 今天

相关文章

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

目录[+]