织梦循环栏目下文章如何实现动态加载?

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

下面我将从基础用法进阶技巧,详细地为你讲解如何实现。

织梦循环栏目下文章
(图片来源网络,侵删)

基础用法:调用指定栏目下的文章

这是最简单直接的方式,通常用于首页、栏目页或自定义页面,调用某个或某几个固定ID的栏目下的文章。

标签说明

{dede:arclist} 标签用于获取文章列表,它有很多属性来控制输出的内容。

常用属性

  • typeid: 核心属性,指定要获取文章的栏目ID,可以是一个ID(如 typeid='1'),也可以是多个ID,用逗号隔开(如 typeid='1,2,3')。
  • row: 输出文章的数量。row='10' 表示输出10篇文章。
  • titlelen: 标题长度。titlelen='30' 表示标题最多显示30个字符(一个汉字算2个字符)。
  • infolen: 内容摘要长度。infolen='100' 表示摘要最多显示100个字符。
  • orderby: 排序方式,常用值:
    • pubdate:按发布时间排序(默认)。
    • hotclick:按点击量排序。
    • id:按文章ID排序。
  • orderway: 掇序方向。desc(降序,默认)或 asc(升序)。
  • channelid: 频道ID,默认为1(文章频道),如果调用的是图集、软件等其他模型,需要修改此值。
  • idlist: 文章ID列表,如果只想调用特定的几篇文章,可以用此属性,如 idlist='10,22,35'

示例代码

假设我们要调用栏目ID为 '1' 的栏目下的 10 篇文章,按发布时间降序排列,标题长度限制为 30 个字符。

{dede:arclist typeid='1' row='10' titlelen='30' orderby='pubdate' orderway='desc'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
{/dede:arclist}

字段说明

  • [field:title/]: 文章标题。
  • [field:arcurl/]: 文章链接。
  • [field:pubdate/]: 文章发布时间,是一个时间戳,通常会配合 function 进行格式化,如示例中的 MyDate('Y-m-d', @me)
  • [field:litpic/]: 文章缩略图。
  • [field:description/]:
  • [field:click/]: 文章点击量。

进阶用法:循环调用多个栏目下的文章

我们需要一次性调用几个不同栏目下的文章,并合并在一起显示。

织梦循环栏目下文章
(图片来源网络,侵删)

方法:使用 typeid 属性

只需在 typeid 属性中列出所有需要调用的栏目ID,用英文逗号隔开即可。

示例代码

假设我们要同时调用栏目ID为 '1''3' 的栏目下的文章,总共显示 8 篇。

<h3>最新资讯</h3>
<ul>
    {dede:arclist typeid='1,3' row='8' titlelen='40' orderby='pubdate' orderway='desc'}
        <li>
            <span class="date">[field:pubdate function="MyDate('m-d', @me)"/]</span>
            <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
        </li>
    {/dede:arclist}
</ul>

高级用法:循环调用子栏目及其下的文章

这是非常常见的需求,比如在首页的某个区域,显示“产品中心”这个一级栏目下的所有子栏目,并且在每个子栏目标题后面,列出该子栏目下的 N 篇最新文章。

这需要结合 {dede:channel}{dede:arclist} 标签嵌套使用。

织梦循环栏目下文章
(图片来源网络,侵删)

核心思路

  1. 使用 {dede:channel} 循环调用指定父栏目下的所有子栏目。
  2. {dede:channel} 的循环体内,使用 {dede:arclist} 调用当前循环到的子栏目(typeid='[field:id/]')下的文章。

示例代码

假设“产品中心”栏目的ID是 '2',我们想显示它所有子栏目,以及每个子栏目下的3篇最新文章。

<h2>产品中心</h2>
<div class="product-list">
    {dede:channel type='son' typeid='2'}
        <div class="product-category">
            <h3><a href="[field:typelink/]">[field:typename/]</a></h3>
            <ul>
                {dede:arclist typeid='[field:id/]' row='3' titlelen='20' orderby='pubdate' orderway='desc'}
                    <li>
                        <a href="[field:arcurl/]" title="[field:title/]">
                            <img src="[field:litpic/]" alt="[field:title/]">
                            <span>[field:title/]</span>
                        </a>
                    </li>
                {/dede:arclist}
            </ul>
        </div>
    {/dede:channel}
</div>

代码解析

  • {dede:channel type='son' typeid='2'}:
    • typeid='2': 指定父栏目ID,即“产品中心”。
    • type='son': 表示调用该父栏目的所有直接子栏目。
  • [field:id/]: 在 {dede:channel} 循环中,[field:id/] 代表当前子栏目的ID。
  • [field:typelink/]: 当前子栏目的链接地址。
  • [field:typename/]: 当前子栏目的名称。
  • 内层的 {dede:arclist} 就是通过 typeid='[field:id/]' 来获取当前子栏目下的文章。

常见问题与技巧

如何调用当前栏目下的文章?

在栏目页模板(list_article.htm)或文章页模板(article_article.htm)中,可以使用全局变量 typeid

{dede:arclist typeid='~typeid~' row='5' titlelen='30'}
    ...
{/dede:arclist}
  • ~typeid~ 是织梦的特殊写法,它会自动解析为当前页面的栏目ID。

如何排除某个栏目?

织梦的 arclist 标签本身没有直接排除栏目的属性,一个变通的方法是:

  1. 获取所有需要调用的栏目的ID。
  2. 将不需要的栏目ID从列表中移除。
  3. 将处理后的ID列表赋值给 typeid 属性。

要调用ID为1,2,3,4的栏目,但排除ID为3的栏目:

{dede:arclist typeid='1,2,4' row='10'}
    ...
{/dede:arclist}

如何自定义样式和分页?

  • 自定义样式:通过给 <li> 或其他HTML元素添加 classid 属性,然后在CSS文件中定义样式。
    {dede:arclist typeid='1' row='5'}
        <li class="news-item">
            <a href="[field:arcurl/]">[field:title/]</a>
        </li>
    {/dede:arclist}
  • 分页{dede:arclist} 本身不包含分页功能,如果需要分页,应该使用 {dede:list} 标签,并配合 {dede:pagelist} 标签使用。{dede:list} 通常用于栏目页模板,而 {dede:arclist} 更多用于首页、自定义页面等非列表页

需求场景 核心标签 关键属性
调用单个栏目文章 {dede:arclist} typeid='栏目ID'
调用多个栏目文章 {dede:arclist} typeid='ID1,ID2,ID3'
循环调用子栏目及其文章 {dede:channel} + {dede:arclist} typeid='父栏目ID'typeid='[field:id/]'
调用当前栏目文章 {dede:arclist} typeid='~typeid~'

掌握了以上几种用法,你就可以灵活地在织梦网站的各个位置实现文章的循环调用了,希望这份详细的指南能帮到你!

-- 展开阅读全文 --
头像
dede插件安装步骤是怎样的?
« 上一篇 04-23
C语言小组通讯录如何用C语言实现?
下一篇 » 04-23

相关文章

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

目录[+]