dede首页如何调用二级栏目列表?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 DEDE建站 正文
  1. 调用一级栏目列表:先获取所有顶级栏目。
  2. 在一级栏目循环内,调用其对应的二级栏目列表:对每一个一级栏目,再查找并显示它的所有子栏目。

下面我将为您提供几种最常用和最实用的方法,从最标准的代码到更简洁的标签。

dede首页调用二级栏目列表
(图片来源网络,侵删)

最标准、最常用的方法(推荐)

这是最清晰、最易于理解和维护的方法,使用{dede:channel}标签嵌套实现。

适用场景:在首页某个模块,清晰地展示每个一级栏目及其下属的二级栏目。

代码示例:

{dede:channel type='top' row='8'}
    <dl>
        <dt><a href="[field:typelink/]">[field:typename/]</a></dt>
        <dd>
            {dede:sonchannel}
                <a href="[field:typelink/]">[field:typename/]</a>
            {/dede:sonchannel}
        </dd>
    </dl>
{/dede:channel}

代码详解:

dede首页调用二级栏目列表
(图片来源网络,侵删)
  1. 外层循环 {dede:channel type='top' row='8'}

    • type='top':表示调用顶级栏目(一级栏目)。
    • row='8':表示只调用前8个一级栏目,你可以根据需要修改这个数字。
    • [field:typename/]:输出一级栏目的名称。
    • [field:typelink/]:输出一级栏目的链接地址。
  2. 内层循环 {dede:sonchannel}

    • 这个标签非常关键,它必须放在 {dede:channel} 的循环体内
    • 它的作用是:自动获取当前外层循环中这个一级栏目的所有直接子栏目(即二级栏目)
    • 它会自动循环遍历所有子栏目,你不需要提供任何额外参数。
    • [field:typename/][field:typelink/] 在这里表示的是子栏目(二级栏目)的名称和链接。
  3. HTML 结构

    • <dl>, <dt>, <dd> 是一个经典的列表结构,非常适合这种“标题+列表”的布局。
    • <dt> 用来显示一级栏目标题。
    • <dd> 用来包裹其下的二级栏目列表。

简洁的单行循环方法

如果你不希望用 <dl> <dt> <dd> 这样的复杂结构,只想简单地用 <ul> 列出所有一级和二级栏目,可以使用这种方法。

dede首页调用二级栏目列表
(图片来源网络,侵删)

适用场景:生成一个扁平化的、包含所有层级的导航菜单。

代码示例:

<ul>
    {dede:channel type='top' row='8'}
        <li>
            <a href="[field:typelink/]">[field:typename/]</a>
            {dede:sonchannel}
                <a href="[field:typelink/]">[field:typename/]</a>
            {/dede:sonchannel}
        </li>
    {/dede:channel}
</ul>

代码详解:

  • 这个方法和方法一的逻辑完全一样,只是HTML结构换成了 <ul><li>
  • 每个一级栏目 <li> 内部,先显示自己,然后通过 {dede:sonchannel} 输出它的所有二级栏目链接。

调用指定一级栏目下的二级栏目

你可能只想在首页的某个特定位置,显示某一个特定一级栏目(产品中心”)的二级列表,而不是所有一级栏目。

适用场景:首页的一个特定模块,产品分类”、“服务项目”等。

代码示例:

假设你“产品中心”这个一级栏目的 ID 是 2

<h2>产品分类</h2>
<ul>
    {dede:channel type='son' typeid='2'}
        <li><a href="[field:typelink/]">[field:typename/]</a></li>
    {/dede:channel}
</ul>

代码详解:

  1. {dede:channel type='son' typeid='2'}

    • type='son':表示调用指定栏目的子栏目
    • typeid='2':这是最关键的部分,指定了要查询哪个栏目的子栏目,这里的 2 就是你目标一级栏目的ID。
    • 如何找到栏目ID?登录DedeCMS后台 -> 【核心】-> 【栏目管理】,鼠标移动到你想查询的栏目上,浏览器状态栏会显示 ...?cid=2,这个数字就是ID。
  2. 循环体

    • 因为这里已经直接指定了父栏目,所以循环体内直接输出 [field:typename/][field:typelink/] 即可,它们指的就是二级栏目。

重要补充与注意事项

如何获取栏目ID?

这是最常见的问题,获取方法非常简单:

  • 登录你的DedeCMS网站后台。
  • 在左侧菜单点击【核心】 -> 【栏目管理】。
  • 将鼠标光标移动到你想调用的那个一级栏目名称上(不要点击)。
  • 查看浏览器左下角状态栏,会显示一个链接,类似 http://你的域名.com/dede/catalog_edit.php?cid=2
  • 等号 后面的数字 2 就是这个栏目的ID。

样式美化

上面的代码只提供了结构,你需要通过CSS来美化它们,以达到你想要的视觉效果。

对于方法一的代码,你可以添加如下CSS:

/* 首页栏目列表样式 */
.dede-channel-list dl {
    width: 200px; /* 每个栏目的宽度 */
    float: left;   /* 实现多列并排 */
    margin: 10px;
    border: 1px solid #eee;
    padding: 10px;
}
.dede-channel-list dt {
    font-weight: bold;
    font-size: 16px;
    border-bottom: 1px dashed #ccc;
    padding-bottom: 5px;
    margin-bottom: 5px;
}
.dede-channel-list dt a {
    color: #333;
    text-decoration: none;
}
.dede-channel-list dd {
    padding-left: 10px;
}
.dede-channel-list dd a {
    color: #666;
    text-decoration: none;
    display: block; /* 让链接块级化,方便设置间距 */
    padding: 2px 0;
}
.dede-channel-list dd a:hover {
    color: #ff6600;
    text-decoration: underline;
}

在模板文件中,你可以给外层 <dl> 加上一个class,<dl class="dede-channel-list">,然后将上面的CSS代码放到你的网站CSS文件中。

缓存问题

DedeCMS heavily relies on caching. 如果你在修改模板代码后,前台页面没有立即生效,请:

  • 进入后台 -> 【生成】 -> 更新首页
  • 如果还是不行,可以尝试清空一下浏览器缓存,或者按 Ctrl + F5 强制刷新页面。

希望这些详细的解释和示例能帮助你成功在DedeCMS首页调用二级栏目列表!

-- 展开阅读全文 --
头像
while和if的核心区别究竟是什么?
« 上一篇 01-14
织梦建站仿站教程23集,如何快速掌握仿站技巧?
下一篇 » 01-14

相关文章

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

目录[+]