织梦列表页如何调用当前栏目名称?

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

使用 typename

这是最简单、最直接的方法,适用于绝大多数情况。

织梦列表页调用栏目名称
(图片来源网络,侵删)

基本用法

在列表页模板文件(通常是 list_artlist.htm)中,您可以直接使用 {dede:field.typename/} 标签来获取当前列表页所对应的栏目名称。

示例代码:

<h1>{dede:field.typename/}</h1>
<div class="list">
  {dede:list pagesize='10'}
  <li>
    <a href="[field:arcurl/]">[field:title/]</a>
    <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
  </li>
  {/dede:list}
</div>

说明:

  • {dede:field.typename/} 会直接输出当前栏目在后台设置的“栏目名称”。
  • 这个标签通常放在 <h1> 标签里作为页面的主标题,或者在面包屑导航中使用。

进阶用法:获取栏目链接

在很多情况下,您不仅需要栏目名称,还需要一个指向该栏目列表页的链接,这时,您可以使用 {dede:field name='typeid' function='GetTypeName(@me)'/} 的方式,并配合 typelink

调用栏目名称并附带链接

{dede:typelink/} 标签会直接生成一个包含栏目名称和链接的 <a>

示例代码:

织梦列表页调用栏目名称
(图片来源网络,侵删)
<!-- 面包屑导航示例 -->
<div class="breadcrumb">
  <a href="/">首页</a> > {dede:typelink/}
</div>
<!-- 或者,如果您想手动控制链接和样式 -->
<div class="current-category">
  您正在浏览:<a href="{dede:field name='typeid' function='GetListUrl(@me)'}">{dede:field.typename/}</a>
</div>

说明:

  • {dede:typelink/}:这是最便捷的方式,直接输出 <a href="栏目链接">栏目名称</a>
  • {dede:field name='typeid' function='GetListUrl(@me)'}:这种方式更灵活,它调用了 GetListUrl 这个自定义函数,根据当前栏目的ID(typeid)获取其列表页的URL,您可以把它和任何标签组合使用。

高级用法:调用顶级栏目名称

您的栏目结构是多级的(网站首页 -> 新闻中心 -> 国内新闻),但您希望在列表页只显示“新闻中心”这个一级栏目的名称,这时就需要调用顶级栏目。

调用顶级栏目名称

使用 {dede:field.typeid/} 获取当前栏目ID,然后通过SQL查询或自带的函数来获取其顶级栏目名称。

使用SQL查询(推荐,灵活可控)

在列表页模板中,使用 {dede:sql} 标签执行一条SQL语句。

示例代码:

<h1>
  当前栏目:{dede:field.typename/}
</h1>
<h2>
  顶级栏目:{dede:sql sql="SELECT typename FROM dede_arctype WHERE id=~topid~"}
    [field:typename/]
  {/dede:sql}
</h2>

代码解释:

  • dede_arctype 是存储栏目的数据表。
  • id=~topid~ 是织梦模板引擎的一个特殊用法,~topid~ 会被自动替换为当前栏目的顶级栏目ID,非常方便。
  • SELECT typename FROM ... 就是标准的SQL查询语句,用于获取顶级栏目的名称。

使用全局变量(需要修改PHP文件,不推荐新手)

这个方法需要修改核心文件,会随着织梦升级而失效,但也是一种思路。

  1. 打开 /include/common.func.php 文件,在最后添加一个自定义函数:
    // 获取顶级栏目名称
    function GetTopTypename($id)
    {
        global $dsql;
        $row = $dsql->GetOne("SELECT typename,reid FROM dede_arctype WHERE id='$id'");
        if ($row['reid'] == 0)
        {
            return $row['typename'];
        }
        else
        {
            return GetTopTypename($row['reid']);
        }
    }
  2. 然后在列表页模板中调用这个函数:
    <h1>顶级栏目:{dede:field name='typeid' function='GetTopTypename(@me)'/}</h1>

总结与推荐

场景 推荐标签 示例 说明
仅显示栏目名称 {dede:field.typename/} <h1>{dede:field.typename/}</h1> 最简单、最常用的方法。
显示栏目名称和链接 {dede:typelink/} <a href="{dede:typelink/}">{dede:field.typename/}</a> {dede:typelink/} 会直接生成完整的 <a>
显示顶级栏目名称 {dede:sql} {dede:sql sql="SELECT typename FROM dede_arctype WHERE id=~topid~"}[field:typename/]{/dede:sql} 灵活,适用于多级栏目结构,无需修改核心文件。
在循环体内调用当前栏目 {dede:field.typename/} {dede:list}<li>{dede:field.typename/}: [field:title/]</li>{/dede:list} {dede:list} 循环内,{dede:field.typename/} 依然有效,但要注意它获取的是列表页本身的栏目,而非文章所属的栏目。

请务必确认:

  • 您修改的是正确的模板文件,通常是 templets/您的模板目录/list_artlist.htm
  • 如果修改后没有生效,请登录织梦后台,点击 “生成” -> “更新HTML”,然后重新访问列表页,清除浏览器缓存。

希望这些方法能帮到您!

-- 展开阅读全文 --
头像
dede php.ini配置文件在服务器哪个位置?
« 上一篇 01-28
dede手机访问域名如何正确设置?
下一篇 » 01-28
取消
微信二维码
支付宝二维码