使用全局变量 $type
织梦在栏目页和文章页,都会自动将当前栏目的信息加载到一个全局数组变量 $type 中,我们只需要通过这个变量来获取即可。

在列表页 (list_*.php) 调用当前二级栏目
这是最直接的场景,因为列表页本身就是为某个栏目服务的。
假设你的栏目结构如下:
- 一级栏目:
新闻中心(ID=1) - 二级栏目:
公司新闻(ID=2) - 二级栏目:
行业动态(ID=3)
当用户访问 公司新闻 的列表页时,$type 变量里就存储了 公司新闻 这个栏目的所有信息。
示例代码 (在列表页模板 list_*.php 中)
你可以直接在模板文件中使用以下代码:
<h1 class="current-category-title">
<a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a>
</h1>
<p class="category-description">
{dede:field name='description'/}
</p>
$type 变量中常用字段说明
| 字段名 | 说明 | 示例 |
|---|---|---|
typename |
栏目名称 (最常用) | 公司新闻 |
typedir |
栏目目录 (不带域名) | /news/company/ |
typeurl |
栏目完整链接 (自动生成,最常用) | http://www.yoursite.com/news/company/ |
id |
栏目ID | 2 |
description |
栏目简介 | 这里是公司新闻的详细描述... |
seotitle |
栏目SEO标题 | 公司新闻 - 您的公司名称 |
keywords |
栏目关键词 | 公司新闻, 公司动态, 企业资讯 |
在文章页 (article_*.php) 调用当前二级栏目
文章属于某个栏目,所以文章页也可以通过 $type 变量获取它所属栏目的信息,这个方法同样适用于一级、二级、三级等任意层级的栏目。
示例代码 (在文章页模板 article_*.php 中)
在文章详情页,你想显示“本文所属栏目”:
<div class="article-meta">
<span>本文所属分类:</span>
<a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a>
</div>
<div class="article-category-desc">
{dede:field name='description' function='htmlspecialchars(@me)'/}
</div>
注意:在文章页,{dede:field name='typename'} 和 {dede:global.name/} 是不同的。
{dede:field name='typename'}:获取的是当前文章所属栏目的名称。{dede:global.name/}:获取的是你后台设置的“网站名称”。
在首页或首页某个特定位置调用当前二级栏目
这个需求稍微复杂一些,因为首页不属于任何一个具体栏目,通常我们想表达的是“根据用户点击进入的二级栏目,在首页显示该栏目的信息”,这需要结合 JS 和 PHP 来实现,或者使用更灵活的 arclist
这种方法是前端实现,通过JS改变首页显示的内容,而不需要刷新页面。 在首页模板 在首页的 在织梦根目录下创建一个PHP文件 修改首页的栏目链接,让它们调用JS函数: 如果你的首页是静态生成的,并且想根据某个参数(如URL中的 修改栏目链接,让它们传递 在首页模板 对于绝大多数情况,记住在 列表页 和 文章页 使用 方法A:使用JS切换(用户体验好,推荐)
index.htm 中,为要显示栏目信息的区域设置一个ID:<div class="current-category-info" id="categoryDisplayArea">
<!-- 默认内容,比如欢迎语 -->
<p>欢迎访问,请点击上方栏目导航。</p>
</div>
<head> 或底部引入一个JS文件(static/js/category.js):// category.js
function showCategoryInfo(typeId) {
// 使用AJAX请求获取栏目信息
fetch(`/include/getCategoryInfo.php?id=${typeId}`)
.then(response => response.json())
.then(data => {
if (data.success) {
document.getElementById('categoryDisplayArea').innerHTML = `
<h2><a href="${data.typeurl}">${data.typename}</a></h2>
<p>${data.description}</p>
`;
}
})
.catch(error => console.error('Error:', error));
}
include/getCategoryInfo.php:<?php
// 引入数据库配置
require_once (dirname(__FILE__) . "/../include/common.inc.php");
$typeid = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($typeid > 0) {
$query = "SELECT * FROM `#@__arctype` WHERE id = $typeid";
$row = $dsql->GetOne($query);
if (is_array($row)) {
$result = array(
'success' => true,
'typename' => $row['typename'],
'typeurl' => GetTypeUrl($row['id'], $row['typedir'], $row['isdefault'], $row['defaultname'], $row['ispart'], $row['namerule'], $row['moresite'], $row['siteurl'], $row['sitepath']),
'description' => $row['description']
);
echo json_encode($result);
} else {
echo json_encode(array('success' => false, 'message' => '栏目不存在'));
}
} else {
echo json_encode(array('success' => false, 'message' => '无效的栏目ID'));
}
?>
<!-- 原来的链接 -->
<a href='{dede:type}[field:typelink/]{/dede:type}'>公司新闻</a>
<!-- 修改为 -->
<a href="javascript:;" onclick="showCategoryInfo(2)">公司新闻</a>
<a href="javascript:;" onclick="showCategoryInfo(3)">行业动态</a>
方法B:使用
{dede:arclist} 标签(静态化友好)typeid)来显示特定栏目,可以使用 arclist
typeid 参数:<!-- 链接到首页并带上栏目ID -->
<a href='/index.php?typeid=2'>公司新闻</a>
<a href='/index.php?typeid=3'>行业动态</a>
index.htm 中,使用PHP判断和 arclist:{dede:php}
$typeid = isset($_GET['typeid']) ? intval($_GET['typeid']) : 0;
if ($typeid > 0) {
// 获取栏目信息
$typeInfo = $dsql->GetOne("SELECT typename, description FROM `#@__arctype` WHERE id = $typeid");
// 输出栏目名称和简介
echo "<h2><a href='/list.php?tid=" . $typeid . "'>" . $typeInfo['typename'] . "</a></h2>";
echo "<p>" . $typeInfo['description'] . "</p>";
}
{/dede:php}
<!-- 根据typeid调用该栏目的文章列表 -->
{dede:arclist typeid='$typeid' titlelen='40' row='10'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
你的位置
想要做什么
推荐方法
列表页 (
list_*.php)获取当前栏目的名称、链接、简介等。
直接使用
{dede:field name='typename'}
文章页 (
article_*.php)获取当前文章所属栏目的信息。
直接使用
{dede:field name='typename'}
首页 (
index.htm)根据用户点击动态显示某个二级栏目的信息。
推荐JS方法,用户体验好,无需刷新页面。
首页 (
index.htm)生成静态页面时,根据URL参数显示特定栏目内容。
使用
arclist + PHP判断,适合纯静态化方案。{dede:field name='xxx'} 调用 $type 变量里的信息即可。
