dede如何获取当前栏目或文章的ID?

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

页(文章详情页)获取当前文章ID

这是最简单直接的情况,在文章内容页(通常是 article_article.htm 或你自定义的文章模板),文章ID是全局变量。

方法:直接使用全局变量 $arcID 页模板中,DedeCMS已经将当前文章的ID存储在全局变量 $arcID 中,你可以在模板的任何地方直接使用它。

示例代码:

<p>当前文章的ID是:{dede:field.id/}</p>
<p>或者使用PHP代码获取:<?php echo $arcID; ?></p>

说明:

  • {dede:field.id/} 是DedeCMS的标签,等同于 $arcID
  • $arcID 是一个PHP变量,如果你在模板中写PHP代码,可以直接使用它。

在文章列表页(频道页、栏目列表页)获取当前栏目ID

文章列表页(通常是 list_article.htm 或栏目模板)显示的是一个栏目下的所有文章,你需要获取的是当前栏目的ID,而不是文章的ID。

使用DedeCMS标签 {dede:field.typeid/}

这是最推荐的方法,专门用于获取当前栏目页的栏目ID。

示例代码:

<p>当前栏目的ID是:{dede:field.typeid/}</p>

使用PHP全局变量 $typeid

DedeCMS在栏目列表页也会将当前栏目ID存入PHP全局变量 $typeid

示例代码:

<p>当前栏目的ID是:<?php echo $typeid; ?></p>

在自定义页面(单页面)获取当前页面ID

自定义页面(通常由“核心” -> “页面管理”创建,模板文件为 page_article.htm)的ID获取方式与文章内容页类似。

方法:使用DedeCMS标签 {dede:field.id/}

在自定义页面模板中,{dede:field.id/} 标签会输出当前自定义页面的ID。

示例代码:

<p>当前自定义页面的ID是:{dede:field.id/}</p>

在其他非模板文件中获取ID(如PHP脚本)

如果你想在DedeCMS的PHP文件(比如一个自定义的PHP插件或模块)中获取当前页面的ID,情况会复杂一些,因为你需要先判断当前是哪种页面类型。

核心思路: 调用DedeCMS的全局函数或类来判断页面类型并获取ID。

示例代码:

<?php
require_once(dirname(__FILE__) . "/include/common.inc.php"); // 引入核心文件
// 判断当前页面类型并获取ID
if (isset($arcID) && $arcID > 0) {
    // 场景一:在文章内容页
    $current_id = $arcID;
    $page_type = 'article';
    echo "当前是文章内容页,ID是: " . $current_id;
} elseif (isset($typeid) && $typeid > 0) {
    // 场景二:在栏目列表页
    $current_id = $typeid;
    $page_type = 'category';
    echo "当前是栏目列表页,栏目ID是: " . $current_id;
} elseif (isset($aid) && $aid > 0) {
    // 有时文章ID也可能在 $aid 变量中,特别是在某些特定操作或API调用时
    $current_id = $aid;
    $page_type = 'article';
    echo "通过变量 \$aid 获取到文章ID: " . $current_id;
} else {
    // 其他情况,如首页、自定义页面等,需要更复杂的判断
    // 判断是否为首页
    if ($GLOBALS['cfg_phpurl'] == 'home') {
        $page_type = 'home';
        echo "当前是首页";
    } else {
        // 可以尝试获取自定义页面ID
        // 这通常需要从URL参数或特定变量中解析,比较复杂
        // 如果URL是 /page/123.html,可能需要从 $_SERVER['REQUEST_URI'] 中解析
        echo "无法直接确定当前页面ID,或为首页/其他页面。";
    }
}
?>

总结与速查表

页面类型 模板文件 获取ID的Dede标签 获取ID的PHP变量 备注
article_article.htm {dede:field.id/} $arcID 最常用、最简单
栏目列表页 list_*.htm {dede:field.typeid/} $typeid 获取的是栏目ID
自定义页面 page_article.htm {dede:field.id/} $arcID 与文章页类似
首页 index.htm 首页没有ID概念
PHP脚本 - 需手动判断 $arcID, $typeid, $aid 需引入核心文件并判断页面类型

重要提示

  1. 变量作用域$arcID$typeid 等变量是在DedeCMS解析模板的过程中由系统自动定义的,它们只在模板文件或被模板系统加载的文件中有效,直接在独立的PHP文件中可能无法直接获取,需要先引入 include/common.inc.php 并模拟页面请求。
  2. 性能考虑:在模板中直接使用 {dede:field.id/}{$arcID} 是最高效的方式,因为这是DedeCMS原生支持的,性能损耗最小。
  3. URL分析:对于非常规页面(如按ID查询的动态页面),你可能需要通过分析 $_SERVER['REQUEST_URI']$_GET 参数来手动提取ID,但这不属于DedeCMS的标准模板范畴。

希望这份详细的总结能帮助你解决在DedeCMS中获取ID的各种问题!

-- 展开阅读全文 --
头像
C语言快速排序数据结构如何高效实现?
« 上一篇 今天
织梦网怎么上传文档
下一篇 » 今天
取消
微信二维码
支付宝二维码

目录[+]