96SEO 2025-10-16 10:12 17
DEDECMS是国内广泛使用的CMS系统,灵活的模板标签让开发者能自定义页面展示效果。其中,在模板中直接获取当前文章ID,是实现个性化内容展示、统计分析及功能
的基础。特别是在使用 {dede:php} 标签嵌入PHP代码时正确地获取文章ID显得尤为关键。
本文将围绕“如何直接在 {dede:php} 中钩子获取文章ID”展开, 通过详细的原理解析、代码示例和应用场景,帮助新手和中高级开发者快速掌握此技巧,并避免常见陷阱。

在DEDECMS模板系统中,页面渲染时会自动传递许多变量给模板,比如栏目ID、文档ID、标题等。这些变量大部分可以直接在模板标签里使用,也可以通过 {dede:php} 标签引入PHP代码访问。
注意:这些变量是否可用,取决于页面类型及生成方式——动态页面或静态页面存在差异。比方说静态页面下URL不带参数,所以呢需要从其他途径读取当前文档ID。
?aid=123, PHP脚本可直接用$_GET获取文章ID,且模板中的$aid有效。$_GET, 必须依赖模板引擎预设的全局变量$id 或 $aid.{dede:php}tag允许我们嵌入原生PHP代码,实现灵活操作。下面介绍几种常用方式来准确获得当前页文章ID。
- 在DedeCMS动态页, 可用以下代码获得当前文档ID:
{dede:php}
echo $aid;
{/dede:php}- 在DedeCMS静态生成页或详情页中, 有时需要使用全局变量$id:
{dede:php}
echo $id;
{/dede:php}注意事项: 在不同版本或不同环境下可能存在仅一个有效,所以呢建议先测试两个都尝试,确保兼容性。
- 对于动态请求, 可以借助PHP内置数组来捕获URL参数:
{dede:php}
$articleId = isset ? intval : 0;
echo $articleId;
{/dede:php}- 此方法适合未做伪静态或未完全生成静态文件的网站,但一旦开启了伪静态规则或纯静态,则无效。
DedeCMS提供强大的列表调用标签{dede:arclist},可以指定多个具体文档id,实现精准调用。配合{dede:php}能进一步处理业务逻辑:
{dede:arclist row=1 idlist='6'}
{dede:php}
    // 当前循环中文章id
    echo $fields;
{/dede:php}
{/dede:arclist}- 上述示例利用了循环过程中的$fields数组访问每篇文档数据,其中'id'字段即为该篇文档的主键值。对于批量调用或者特定需求非常实用。
DedeCMS支持插件式开发及钩子机制,等场景下实时获得并操作当前文章id。
{dede:php}
include_once;
echo hook_get_article_id;
{/dede:php}- 静态化后 URL 不再携带查询字符串, 而是类似 “/article/123.html” 的形式,这导致传统通过 $_GET 获取参数失效。所以呢推荐采用以下方法:
因为用户体验要求提升,在详情页异步加载数据成为主流。本文附上一个简单示例, 实现基于当前页面文章 ID 动态拉取阅读数及评论数的思路,让你更全面掌握该技术点应用价值!
// 或者更通用写法:
// 注释: // {dede:id} 和 { d e d e : g e t aid } 均表示输出本篇稿件 ID
javascript
Demand feedback