dede list不能指定id

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

这个问题的根源在于混淆了{dede:list}{dede:arclist}标签的功能。

dede list不能指定id
(图片来源网络,侵删)

核心概念:{dede:list} vs {dede:arclist}

在解决这个问题之前,我们必须先理解这两个最常用列表标签的区别:

特性 {dede:list} {dede:arclist}
主要用途 ,用于显示当前栏目下的所有文章列表。 任意页面,用于调用任意指定栏目(或多个栏目)的文章列表,非常灵活。
工作原理 它默认就限定在当前栏目内,通过typeid参数来获取栏目ID。 它是一个“万能”的列表标签,需要明确指定要调用的栏目ID。
性能 性能相对较高,因为它直接基于当前栏目ID进行查询。 功能强大,但涉及跨栏目查询时,性能可能略低于list
典型场景 首页某个栏目的最新文章列表、栏目页的文章列表。 首页调用多个指定栏目的文章、推荐文章、热门文章等。
  • {dede:list}“我就在这个栏目里,把我的兄弟们都列出来”
  • {dede:arclist}“给我把栏目ID为1、3、5的所有文章都列出来”

如何在{dede:list}中指定ID(即typeid参数)

既然{dede:list}主要用于栏目页,那么它的“指定ID”就是指指定要调用的栏目ID,这个参数就是 typeid

基本语法

{dede:list typeid='栏目ID' pagesize='10'}
    <a href="[field:arcurl/]">[field:title/]</a>
    <p>[field:description function='cn_substr(@me,100)'/]...</p>
    <span>[field:pubdate function='MyDate("Y-m-d",@me)'/]</span>
{/dede:list}
  • typeid='栏目ID':这是关键,你需要将 '栏目ID' 替换成你想要调用的栏目在DedeCMS后台的实际数字ID
  • pagesize='10':可选参数,表示每页显示的文章数量。

使用场景详解

在首页调用指定栏目的文章列表

这是最常见的用法,假设你想在首页显示“网站公告”(栏目ID为1)栏目下的文章。

dede list不能指定id
(图片来源网络,侵删)
  1. 进入DedeCMS后台,找到“网站公告”栏目,记下它的栏目ID(假设为 1)。
  2. 打开你的首页模板文件(通常是 index.htm)。
  3. 在你想要显示列表的位置,插入以下代码:
<h2>网站公告</h2>
<ul>
    {dede:list typeid='1' pagesize='5'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
        <span>[field:pubdate function='strftime("%Y-%m-%d", @me)'/]</span>
    </li>
    {/dede:list}
</ul>

在自定义页面(单页)调用指定栏目列表

如果你想在一个不隶属于任何栏目的自定义页面(如“关于我们”、“联系我们”页面)中,调用某个栏目的文章列表,方法完全相同。

  1. 创建或编辑你的自定义页面模板(about.htm)。
  2. 同样使用{dede:list}标签并明确指定typeid
<div class="news-list">
    <h3>最新动态</h3>
    {dede:list typeid='2' pagesize='8'}
    <div class="news-item">
        <h4><a href="[field:arcurl/]">[field:title/]</a></h4>
        <div class="info">[field:pubdate function='MyDate("Y-m-d H:i",@me)'/] 作者:[field:writer/]</div>
        <p>[field:info/]</p>
    </div>
    {/dede:list}
    {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
</div>

注意:在自定义页面中使用时,你可能还需要在后台的“模板”->“自定义页面”中,为这个页面选择正确的栏目(虽然页面本身是单页,但指定栏目ID可以让list标签找到数据源),或者确保你的系统设置允许在非栏目页使用list


常见问题与排查

如果按照上述方法使用了typeid但依然无效,请检查以下几点:

  1. 栏目ID是否正确?

    dede list不能指定id
    (图片来源网络,侵删)
    • 最常见错误! 登录DedeCMS后台,进入“栏目管理”,鼠标移动到你想要调用的栏目名称上,浏览器左下角会显示该栏目的ID,cms/edit/plus_list.php?tid=2,这里的 2 就是ID,确保你的typeid='2'中的数字是正确的。
  2. 是否在正确的模板文件中使用?

    • 确保你修改的是最终生成页面对应的模板文件,首页对应index.htm,栏目ID为3的栏目页对应templets/default/目录名/list_3.htm
  3. 权限问题

    确保你的模板文件有可读权限,Web服务器用户(如www-data, apache)可以访问。

  4. 缓存问题

    • 修改模板后,务必在后台“生成” -> “更新主页HTML”或“更新栏目HTML”,让系统重新生成页面,浏览器缓存也可能导致看不到效果,可以按 Ctrl + F5 强制刷新。
  5. 标签拼写错误

    • 检查标签是否拼写正确,例如{dede:list}不要写成{dede:list}{dede:LIST}

  • {dede:list}可以指定ID,参数是 typeid
  • 它的本质是指定一个栏目,然后调用该栏目下的文章列表。
  • 首页自定义页面中调用指定栏目列表时,必须显式写出 typeid='栏目ID'
  • 栏目页模板(如 list_x.htm)中使用时,可以省略typeid,因为它默认就是当前栏目的ID。

希望这个详细的解释能帮助您彻底解决这个困惑!

-- 展开阅读全文 --
头像
c语言unicodetogbk
« 上一篇 01-04
织梦如何安装百度编辑器
下一篇 » 01-04

相关文章

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