dede当前文章id是什么?如何获取?

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

使用全局变量 $artid (最推荐、最直接)

这是在 DedeCMS 模板文件(如 article_article.htm)中获取当前文章 ID 的最常用、最简单的方法。

适用场景:

  • 页模板 (article_article.htm) 中。
  • 在文章列表页或相关文章等需要调用当前文章信息的页面。

代码示例:

在您的模板文件(article_article.htm)的任意位置,直接使用以下代码即可输出当前文章的 ID。

当前文章ID是:{dede:field.id/}

或者,如果您想在 PHP 代码块中使用,可以直接调用全局变量 $artid

在模板中直接使用变量:

当前文章ID是:<?php echo $artid; ?>

为什么 $artid 是最好的选择? 因为当用户访问一个文章页面时(https://www.yoursite.com/a/123/456.html),DedeCMS 的系统会自动解析 URL,将文章 ID 456 赋值给全局变量 $artid,这个变量在文章内容页的整个生命周期内都是可用的,效率最高。


使用 GetArc() 函数 (适用于标签中)

如果您想在自定义的 DedeCMS 标签({dede:mytag})或者需要获取文章详细信息的场景下使用,GetArc() 函数是一个强大的工具。

适用场景:

  • 在自定义标签中。
  • 当您不仅需要 ID,还需要文章的其他信息(如标题、发布时间等)时。

代码示例:

在自定义标签文件中(/include/taglib/mytag.lib.php),您可以通过文章别名或 ID 来获取文章信息。

// 假设我们已经通过某种方式知道了当前文章的ID,$artid
$arcRow = GetArc($artid);
if($arcRow){
    echo "文章ID: " . $arcRow['id'];
    echo "<br>";
    echo "文章标题: " . $arcRow['title'];
    echo "<br>";
    echo "文章发布时间: " . $arcRow['pubdate'];
}

GetArc() 函数会返回一个包含文章所有字段(如 id, title, typeid, pubdate 等)的数组。


在 PHP 文件中获取 (适用于开发)

如果您是在 PHP 文件(例如一个自定义的插件或页面)中获取当前文章 ID,而不是在模板里,您可以通过 global 关键字来调用全局变量。

适用场景:

  • 开发 DedeCMS 插件或功能模块。
  • index.php 或其他需要判断当前页面类型的 PHP 文件中。

代码示例:

<?php
// 引入DedeCMS的公共文件
require_once (dirname(__FILE__) . "/include/common.inc.php");
// 声明使用全局变量
global $artid;
// 检查是否在文章页面
if($artid > 0){
    echo "当前在文章页面,文章ID是: " . $artid;
    // 您也可以在这里使用 $dsql 查询更多信息
    $row = $dsql->GetOne("SELECT title FROM `#@__archives` WHERE id = $artid");
    if($row){
        echo "<br>文章标题是: " . $row['title'];
    }
} else {
    echo "当前不在文章页面。";
}
?>

总结与对比

方法 适用场景 优点 缺点
{dede:field.id/} 页模板 最简单、最直接、官方推荐 仅限在模板文件中使用
$artid 变量 页模板、PHP代码 效率高、无需查询数据库 仅限在文章页面有效,其他页面为空
GetArc() 函数 自定义标签、需要获取完整文章信息 功能强大,可获取文章所有字段 需要一次数据库查询,效率低于直接用变量
global $artid PHP文件开发 在PHP逻辑层获取ID,灵活性高 需要手动引入文件和声明全局变量

常见问题排查

问题: 为什么我用了 {dede:field.id/}$artid,输出是空的?

原因和解决方法:

  1. 模板文件错误: 您可能不在文章内容页模板 (article_article.htm) 中,请确保您编辑的是正确的模板文件。
  2. URL 重写问题: 如果您使用了伪静态(URL重写),确保您的服务器配置正确,DedeCMS 的后台设置(“系统” -> “系统基本参数” -> “核心设置”中的“是否使用伪静态”)已经开启,DedeCMS 正是通过解析伪静态 URL 来设置 $artid 的。
  3. 自定义页面: 如果您在一个自定义的 PHP 页面中,并且该页面没有像 DedeCMS 的文章页那样初始化 $artid 变量,那么它自然是空的,您需要手动获取 URL 参数并解析,如果您的 URL 是 view.php?aid=123,您需要用 $_GET['aid'] 来获取。

希望这份详细的解答能帮助您!在绝大多数情况下,直接使用 {dede:field.id/} 就能完美解决问题。

-- 展开阅读全文 --
头像
dede列表页如何调用自定义字段?
« 上一篇 今天
dede如何调用父栏目名称?
下一篇 » 今天
取消
微信二维码
支付宝二维码

目录[+]