dede channel输出时间

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

如果你想在栏目列表旁边显示栏目的创建时间最后更新时间,你需要使用更强大的 {dede:channelartlist}{dede:sql} 标签,或者对 channel 标签进行一些高级用法处理。

dede channel输出时间
(图片来源网络,侵删)

下面我将为你详细介绍几种最常用和最有效的方法。


使用 {dede:channelartlist} (最推荐,用于栏目列表)

{dede:channelartlist} 是专门用于获取“栏目及其内容列表”的标签,它提供了更丰富的字段,包括时间。

适用场景: 在首页或栏目页,你想同时输出顶级栏目、其子栏目以及每个栏目下的文章列表,并显示栏目的时间。

基本用法示例:

dede channel输出时间
(图片来源网络,侵删)
{dede:channelartlist typeid='top' row='8'}
  <h2><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></h2>
  <ul>
    {dede:sql sql='Select * from dede_arctype where reid=~id~ ORDER BY id limit 0,10'}
      <li>
        <a href="[field:typelink/]">[field:typename/]</a>
        <!-- 输出栏目的创建时间 -->
        <span class="time">创建于:[field:typedate function="MyDate('Y-m-d', @me)"/]</span>
      </li>
    {/dede:sql}
  </ul>
{/dede:channelartlist}

代码解析:

  1. {dede:channelartlist typeid='top' row='8'}: 循环输出顶级栏目,最多8个。
  2. {dede:field name='typeurl'}: 获取当前顶级栏目的链接。
  3. {dede:field name='typename'}: 获取当前顶级栏目的名称。
  4. {dede:sql ...}: 这是一个子查询,用于获取当前顶级栏目 (~id~) 的所有子栏目。
  5. [field:typedate ...]: 这是关键部分。typedate 字段存储了栏目的创建时间。
  6. function="MyDate('Y-m-d', @me)": 这是 DedeCMS 的一个强大功能,用于格式化时间。
    • 'Y-m-d': 定义你想要的时间格式,Y-m-d H:i:s 会输出 2025-10-27 15:30:00
    • @me: 代表 typedate 字段的原始值。

使用 {dede:sql} 直接查询 (最灵活)

如果你不想使用 channelartlist 的复杂结构,或者你的需求非常简单(比如只想在某处显示所有栏目的时间),{dede:sql} 是最直接、最灵活的方式。

适用场景: 任意需要自定义查询栏目信息的地方,灵活性最高。

基本用法示例:

dede channel输出时间
(图片来源网络,侵删)
<ul>
  {dede:sql sql='Select id,typename,typedate,typedir from dede_arctype where reid=0 ORDER BY id limit 0,10'}
    <li>
      <a href="[field:typedir function='str_replace("{cmspath}","",@me)'/]">[field:typename/]</a>
      <!-- 输出栏目的最后更新时间 (arctypedate字段) -->
      <span>更新于:[field:arctypedate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
  {/dede:sql}
</ul>

代码解析:

  1. {dede:sql sql='...'}: 执行一条自定义的 SQL 语句。
  2. from dede_arctype: 指定查询的数据表是 dede_arctype,即栏目表。
  3. where reid=0: 只查询顶级栏目(reid 为父栏目ID,0代表顶级)。
  4. [field:typedir ...]: 获取栏目的目录路径,注意用 function='str_replace("{cmspath}","",@me)' 去掉路径中的 {cmspath} 变量,得到正确的链接。
  5. [field:arctypedate ...]: arctypedate 字段通常记录的是栏目下最新一篇文章的发布时间,可以理解为栏目的“最后更新时间”。typedate 才是栏目本身的“创建时间”。

修改 channel 标签 (不推荐,但可行)

理论上,{dede:channel} 可以通过 typeid 属性指定一个栏目ID,然后用 runphp='yes'array 来获取额外字段,但这种方法非常繁琐,且不易维护,不推荐使用。


总结与建议

方法 优点 缺点 适用场景
{dede:channelartlist} 结构清晰,功能强大,与栏目和文章列表完美结合。 语法相对复杂,主要用于特定布局。 首页、栏目页的标准布局,需要展示栏目及其内容时。
{dede:sql} 极度灵活,可以随心所欲地查询和组合数据。 需要用户具备基本的 SQL 知识,有安全风险(需注意防注入)。 需要自定义、非标准数据展示时,或进行复杂的数据统计。
{dede:channel} 简单,用于输出基本栏目信息。 无法直接获取时间,扩展性差。 仅需显示栏目名称和链接的简单列表。

给你的最终建议:

  • 如果你是在制作首页的栏目导航区,并且想显示每个栏目的创建时间,请优先使用 方法一 ({dede:channelartlist})
  • 如果你想在某个特定位置(比如文章页的侧边栏)显示一个“热门栏目”列表并附带时间,请使用 方法二 ({dede:sql}),因为它最简单直接。

希望这些详细的解释能帮助你解决问题!

-- 展开阅读全文 --
头像
郑莉C语言程序设计PDF哪里能找到?
« 上一篇 2025-12-25
织梦5.7sp1下拉菜单如何修改或添加?
下一篇 » 2025-12-25

相关文章

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

目录[+]