dede如何调用隐藏栏目?

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

在栏目调用标签(如 {dede:channel})中增加一个 typeid 属性,直接指定要调用的隐藏栏目的 ID。

dede 如何调用隐藏栏目
(图片来源网络,侵删)

下面我将分几种详细情况来解释,从最简单到最复杂的场景。


核心原理:理解“隐藏”栏目

在 DedeCMS 后台,栏目的“隐藏”功能是通过一个字段来控制的,这个字段通常叫做 ishidden

  • ishidden = 0:栏目不隐藏(正常显示)。
  • ishidden = 1:栏目隐藏(在默认的顶级栏目调用中不显示)。

DedeCMS 的默认栏目调用标签(如 {dede:channel type='top'})会自动过滤掉 ishidden = 1 的栏目,要让它们显示出来,我们必须绕过这个默认过滤机制。


直接指定栏目 ID 调用(最常用、最简单)

这是最直接的方法,适用于你知道要调用的隐藏栏目的 ID 的情况。

dede 如何调用隐藏栏目
(图片来源网络,侵删)

适用场景:

  • 在页脚调用“关于我们”、“联系方式”等隐藏栏目。
  • 页调用相关的隐藏栏目列表。

标签语法:

{dede:channel typeid='栏目ID' row='数量'}
    <a href='[field:typeurl/]'>[field:typename/]</a>
{/dede:channel}

关键参数说明:

  • typeid='栏目ID':这是核心参数,填写你想要调用的那个隐藏栏目的 ID,如果需要调用多个,用英文逗号隔开,typeid='5,12,18'
  • row='数量':表示要调用的栏目数量,对于指定单个栏目,此参数通常省略。
  • type='top'注意,当你使用了 typeid 参数后,type 参数的作用可能会被改变或忽略。typeid 指定了精确的栏目,系统就不会再根据 type(如顶级、下级)去自动查找了。

示例:

dede 如何调用隐藏栏目
(图片来源网络,侵删)

假设你有一个隐藏的栏目“网站地图”,其栏目 ID 为 18,你想在页脚调用它。

<footer>
    <div class="footer-links">
        <a href="{dede:global.cfg_cmsurl/}/">首页</a>
        <a href="/about.html">关于我们</a>
        <!-- 假设网站地图的栏目ID是18 -->
        <a href="{dede:channel typeid='18' type='self'}[field:typeurl/]{/dede:channel}">网站地图</a>
    </div>
</footer>

或者更简洁的写法:

<a href="[field:typelink/]">网站地图</a>

{dede:channel typeid='18'}...{/dede:channel} 整体替换为 [field:typelink/] 即可。


调用所有栏目(包括隐藏的)

如果你需要在一个列表中同时显示正常栏目和隐藏栏目,可以使用 type='son'type='self' 并指定父栏目 ID。

适用场景:

  • 制作网站地图页面。
  • 制作面包屑导航时,需要显示所有层级的栏目。

标签语法:

{dede:channel type='son' typeid='父栏目ID' noself='no'}
    <a href='[field:typeurl/]'>[field:typename/]</a>
{/dede:channel}

关键参数说明:

  • type='son':表示调用指定栏目(typeid)下的所有子栏目。
  • typeid='父栏目ID':指定要查询其子栏目的父栏目,如果你想调用全站所有栏目,可以留空或写一个顶级栏目的 ID。
  • noself='no':这个参数非常重要,默认情况下,type='son' 不会包含栏目本身,设置为 no 表示包含栏目本身,这对于制作面包屑导航非常有用。

示例:

假设你有一个顶级栏目“内容中心”,ID 为 3,它下面有“新闻”、“产品”两个正常栏目,和一个隐藏的“下载”栏目,你想在“内容中心”的列表页显示所有子栏目(包括隐藏的)。

在列表页模板 list_article.htm 中,{dede:field name='typeid'/} 会自动获取当前栏目的 ID,所以可以这样写:

<ul>
    {dede:channel type='son' typeid='3' noself='no'}
        <li>
            <a href="[field:typeurl/]">[field:typename/]</a>
            <!-- (可选) 显示该栏目是否隐藏 -->
            <small>(状态: [field:ishidden function='(@me == 1 ? "隐藏" : "显示")'/])</small>
        </li>
    {dede:channel}
</ul>

这里的 typeid='3' 是硬编码的,在实际应用中,如果你想获取当前栏目下的所有子栏目(包括隐藏的),可以直接使用 typeid 变量:

{dede:channel type='son' typeid='{dede:field name='typeid'/}' noself='no'}
    ...
{/dede:channel}

在特定页面调用隐藏栏目(如首页)

你可能想在首页的某个特定位置调用一个隐藏的栏目,友情链接”或“广告合作”。

适用场景:

  • 首页侧边栏调用一个隐藏的“合作伙伴”栏目列表。
  • 首页底部调用一个隐藏的“版权信息”栏目。

实现步骤:

  1. 创建隐藏栏目:在后台“栏目管理”中,创建一个新栏目,合作伙伴”,并勾选“隐藏”选项,记下它的栏目 ID(假设为 25)。
  2. 修改首页模板:打开首页模板文件 index.htm
  3. 插入调用标签:在你希望显示的位置,插入方法一的标签。

示例代码:

<!-- 在首页的某个 div 中 -->
<div class="partner-section">
    <h3>我们的合作伙伴</h3>
    <ul>
        {dede:channel typeid='25' row='10'}
            <li><a href="[field:typeurl/]" target="_blank">[field:typename/]</a></li>
        {/dede:channel}
    </ul>
</div>

重要注意事项

  1. 栏目 ID 是关键:所有方法都依赖于正确的栏目 ID,你可以在 DedeCMS 后台“栏目管理”中,将鼠标悬停在栏目名称上,浏览器状态栏会显示 ID,或者直接查看数据库的 dede_arctype 表。
  2. 缓存问题:DedeCMS 有强大的缓存机制,当你修改了模板或栏目设置后,如果前台页面没有立即更新,请务必去后台“系统” -> “系统设置” -> “清除所有缓存”,然后刷新前台页面。
  3. 权限问题:确保你调用隐藏栏目的模板文件没有被其他规则(如自定义的 PHP 函数)所过滤。
  4. typeidtype 的关系:一旦你使用了 typeid 参数,系统就会精确查找这个 ID 的栏目,type 参数(如 top, son)的筛选作用就会减弱或失效。typeid='5' 就只调用 ID 为 5 的那个栏目,不管它是不是顶级栏目。
调用需求 推荐标签 关键参数
调用单个或指定的隐藏栏目 {dede:channel} typeid='隐藏栏目ID'
调用某栏目下的所有子栏目(含隐藏) {dede:channel} type='son' + typeid='父栏目ID' + noself='no'
在首页等特定页面调用隐藏栏目 {dede:channel} typeid='隐藏栏目ID'

希望这份详细的指南能帮助你成功地在 DedeCMS 中调用隐藏栏目!

-- 展开阅读全文 --
头像
织梦自定义表单内容如何调用?
« 上一篇 02-14
织梦自定义表单内容如何调用?
下一篇 » 02-14

相关文章

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

目录[+]