织梦如何指定某子分类内容输出?

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

假设你的顶级分类ID是 1,你想获取并显示其下所有直接子分类(二级分类),并且在每个子分类下,再显示该分类下的最新几篇文章。

织梦指定某子分类输出
(图片来源网络,侵删)

我们将分步讲解,并提供完整的代码示例。


场景设定

假设我们有以下分类结构:

  • 顶级分类ID: 1 (产品中心)
    • 子分类ID: 5 (产品A)
    • 子分类ID: 6 (产品B)
    • 子分类ID: 7 (产品C)

我们的目标是:在页面上分别列出“产品A”、“产品B”、“产品C”,并在每个分类标题下,列出该分类下的最新5篇文章。


第一步:获取指定顶级分类下的所有子分类

织梦提供了一个强大的标签 {dede:channel},它可以用来获取分类列表,通过设置其属性,我们可以精确地获取到指定顶级分类下的直接子分类。

织梦指定某子分类输出
(图片来源网络,侵删)

核心标签:{dede:channel}

  • typeid='1': 指定顶级分类的ID,织梦会自动查找此ID下的所有子分类。
  • type='son': 这是关键参数,表示只获取当前分类的直接子分类(二级分类),而不包括孙分类(三级分类)。
  • row='10': 设置要获取的子分类数量。
  • noself='yes': 不包含顶级分类本身。

示例代码:

<h2>产品中心</h2>
<ul class="category-list">
    {dede:channel typeid='1' type='son' row='10' noself='yes'}
    <li>
        <!-- 这里会循环输出每个子分类 -->
        <a href="[field:typelink/]">[field:typename/]</a>
    </li>
    {/dede:channel}
</ul>

这段代码会输出类似下面的HTML:

<h2>产品中心</h2>
<ul class="category-list">
    <li><a href="/plus/list.php?tid=5">产品A</a></li>
    <li><a href="/plus/list.php?tid=6">产品B</a></li>
    <li><a href="/plus/list.php?tid=7">产品C</a></li>
</ul>

第二步:在子分类循环内,调用该分类下的文章列表

这是最关键的一步,我们需要在 {dede:channel} 的循环内部,再次使用文章列表标签 {dede:arclist},并且要确保 arclist 的分类ID是当前循环到的子分类ID。

织梦指定某子分类输出
(图片来源网络,侵删)

核心技巧:{dede:channel} 循环中,每个子分类的信息(如ID、名称等)都可以通过 [field:xxx/] 获取。[field:id/] 就代表了当前子分类的ID,我们将这个ID传递给 {dede:arclist}typeid 属性。

完整示例代码:

下面是一个完整的、可以直接使用的模板代码,实现了“指定某子分类输出”并附带其文章列表的功能。

<h2>产品中心</h2>
<div class="product-container">
    {dede:channel typeid='1' type='son' row='10' noself='yes'}
    <div class="product-category">
        <!-- 1. 输出子分类标题 -->
        <h3><a href="[field:typelink/]">[field:typename/]</a></h3>
        <!-- 2. 在循环内,调用当前子分类下的文章列表 -->
        <ul class="article-list">
            {dede:arclist 
                typeid='[field:id]' 
                titlelen='30' 
                row='5' 
                orderby='pubdate' 
                orderway='desc'
            }
            <li>
                <a href="[field:arcurl/]">[field:title/]</a>
                <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
            </li>
            {/dede:arclist}
        </ul>
    </div>
    {/dede:channel}
</div>

代码解析:

  1. 外层循环 {dede:channel...}:

    • typeid='1': 从顶级分类ID为1开始查找。
    • type='son': 只查找它的直接子分类(产品A, B, C)。
    • 每次循环,[field:id] 的值就会变成 5, 6, 7
  2. 内层循环 {dede:arclist...}:

    • typeid='[field:id]': 这是核心!它动态地将外层循环中当前子分类的ID(5, 6, 7)作为文章查询的分类ID,这样,每次内层循环查询的都是不同分类下的文章。
    • titlelen='30': 截取文章标题长度为30个字符。
    • row='5': 每个分类下只显示5篇文章。
    • orderby='pubdate' orderway='desc': 按发布日期倒序排列,即最新的在最前面。

第三步:CSS样式(可选)

为了让页面更美观,你可以添加一些CSS样式。

.product-container {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
}
.product-category {
    border: 1px solid #eee;
    padding: 15px;
    border-radius: 5px;
    width: calc(33% - 14px); /* 假设每行显示3个 */
    box-sizing: border-box;
}
.product-category h3 {
    margin-top: 0;
    border-bottom: 2px solid #007bff;
    padding-bottom: 10px;
}
.article-list {
    list-style: none;
    padding: 0;
}
.article-list li {
    margin-bottom: 8px;
}
.article-list a {
    text-decoration: none;
    color: #333;
}
.article-list a:hover {
    color: #007bff;
}
.article-list .date {
    font-size: 12px;
    color: #999;
    margin-left: 10px;
}

其他常见需求与解决方案

如何只获取一个特定的子分类(比如ID为6的分类)?

如果不需要循环,只想单独获取某一个分类的信息或其下的文章,可以直接使用 {dede:arclist} 并指定 typeid

示例:只显示ID为6的分类下的最新5篇文章

<h3>产品B 的最新文章</h3>
<ul>
    {dede:arclist typeid='6' titlelen='30' row='5' orderby='pubdate'}
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
    {/dede:arclist}
</ul>

如何获取指定子分类的详细信息(如分类描述、缩略图等)?

织梦的 {dede:channel} 标签不仅可以输出链接和名称,还可以输出分类的其他信息。

常用字段:

  • [field:id]: 分类ID
  • [field:typename]: 分类名称
  • [field:typelink]: 分类链接
  • [field:seotitle]: SEO标题
  • [field:description]: 分类描述
  • [field:typedir]: 分类目录
  • [field:litpic]: 分类缩略图

示例:显示子分类的名称、描述和缩略图

{dede:channel typeid='1' type='son' row='10' noself='yes'}
<div class="category-box">
    <img src="[field:litpic/]" alt="[field:typename/]" />
    <h3><a href="[field:typelink/]">[field:typename/]</a></h3>
    <p>[field:description function='cn_substr(@me, 100)'/]</p> <!-- 截取描述前100个字符 -->
</div>
{/dede:channel}
需求 核心标签/方法 关键参数/技巧
获取指定顶级分类的所有子分类列表 {dede:channel} typeid='顶级分类ID' type='son'
获取特定一个子分类 直接使用 {dede:arclist}{dede:channel} typeid='指定的子分类ID'
在子分类下循环显示其文章 嵌套使用{dede:channel} 内部放 {dede:arclist} arclisttypeid 属性设为 [field:id]
获取子分类的详细信息 {dede:channel} 使用 [field:xxx/] 调用各种字段,如 litpic, description

通过以上方法,你就可以灵活地在织梦模板中实现“指定某子分类输出”及其相关内容的各种需求了。

-- 展开阅读全文 --
头像
C语言飞机订票系统如何实现核心功能?
« 上一篇 今天
C语言算法目的为何是求解?
下一篇 » 今天

相关文章

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

目录[+]