dede当前文章id

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

核心变量:$arcID

在DedeCMS的后台逻辑中,当前文章的ID通常存储在全局变量 $arcID 中,这个变量在文章内容页(article_article.htm)及其相关的PHP文件中是自动定义和可用的。

dede当前文章id
(图片来源网络,侵删)

在PHP代码中获取

这是最直接的方法,通常用于修改核心文件或制作自定义插件。

方法1:直接使用全局变量 $arcID

如果你正在修改的PHP文件是在文章内容页的执行流程中(arc.archives.class.php 或其相关文件),$arcID 已经被赋值。

// 在文章内容页相关的PHP文件中
$currentArticleId = $arcID;
// 使用示例
echo "当前文章ID是: " . $currentArticleId;

方法2:从URL参数中获取(更通用、更推荐)

如果你在一个独立的PHP文件中,或者 $arcID 变量不可靠,你可以直接从 $_GET 全局数组中获取ID,DedeCMS的文章ID通常通过URL参数 aid 传递。

URL示例: http://www.yoursite.com/a/1/123.html (这里的 123 就是文章ID) 或者 http://www.yoursite.com/plus/view.php?aid=123

dede当前文章id
(图片来源网络,侵删)
// 从 $_GET 中获取 'aid' 参数
if (isset($_GET['aid'])) {
    $currentArticleId = intval($_GET['aid']); // 使用 intval() 确保是整数,防止SQL注入
    // 使用示例
    echo "当前文章ID是: " . $currentArticleId;
} else {
    echo "无法获取文章ID,URL中未提供aid参数。";
}

注意: intval() 是一个非常重要的安全函数,它能将变量转换为整数,有效防止恶意用户通过非数字ID进行SQL注入攻击。


在DedeCMS模板(.htm文件)中获取

在模板文件中,你不能直接使用PHP变量,但DedeCMS提供了一系列内置的标签和函数来实现这个功能。

方法1:使用 {dede:field.id/} 标签(最推荐、最标准)

这是在模板中获取文章ID最标准、最简单的方法。{dede:field} 标签用于获取当前文章的各个字段,id 就是文章ID。

<!DOCTYPE html>
<html>
<head>{dede:field.title/}</title>
</head>
<body>
    <h1>{dede:field.title/}</h1>
    <!-- 这里就是获取当前文章ID的方法 -->
    <p>本文的ID是: <strong>{dede:field.id/}</strong></p>
    <div>
        {dede:field.body/}
    </div>
</body>
</html>

方法2:使用 {dede:geturl} 标签(间接获取)

如果你需要的是包含ID的完整URL,可以使用 {dede:geturl} 标签,然后通过PHP的字符串处理函数来提取ID,不过这种方法比较绕,不推荐只为了获取ID而使用。

dede当前文章id
(图片来源网络,侵删)

方法3:在模板中嵌入PHP代码(高级用法)

如果你需要在模板的某个特定位置执行PHP代码来获取ID(结合其他逻辑),可以使用DedeCMS的 {dede:php}

警告: 在模板中直接写PHP代码有安全风险,请确保你完全理解代码的含义,并且只信任数据来源。

<p>通过PHP代码获取的文章ID是:
    <strong>
    {dede:php}
        // 这里可以直接使用 $arcID 变量
        echo $arcID;
        // 或者从 $_GET 获取
        // echo isset($_GET['aid']) ? $_GET['aid'] : '未知';
    {/dede:php}
    </strong>
</p>

在JavaScript (JS) 中获取

有时,你可能需要在页面的JavaScript脚本中获取当前文章的ID,例如用于异步提交数据、加载评论等。

方法1:通过PHP将ID输出为JS变量(最推荐)

在模板文件中,先使用 {dede:field.id/} 获取ID,然后将其赋值给一个JavaScript变量。

<script>
    // 将DedeCMS的文章ID传递给一个JS变量
    var articleId = "{dede:field.id/}";
    // 现在就可以在JS代码中使用这个变量了
    console.log("当前文章ID是: " + articleId);
    // 示例:使用AJAX请求
    /*
    $.ajax({
        url: '/api/get_some_data.php',
        type: 'POST',
        data: {
            aid: articleId
        },
        success: function(response) {
            console.log(response);
        }
    });
    */
</script>

注意: 这种方式会将ID直接嵌入到HTML中,对于公开的页面是安全的,因为ID本身不是敏感信息。

方法2:从当前URL中解析(不依赖DedeCMS标签)

如果你的JS代码在一个独立的 .js 文件中,无法直接访问DedeCMS标签,你可以使用JS从当前页面的URL中解析出ID。

<script>
    function getArticleIdFromUrl() {
        // 获取当前页面的URL
        var url = window.location.href;
        // 尝试匹配 /a/数字/ 的格式
        var match1 = url.match(/\/a\/\d+\/(\d+)\.html/);
        // 尝试匹配 ?aid=数字 的格式
        var match2 = url.match(/[?&]aid=(\d+)/);
        if (match1 && match1[1]) {
            return match1[1];
        } else if (match2 && match2[1]) {
            return match2[1];
        }
        return null; // 如果没找到,返回null
    }
    var articleId = getArticleIdFromUrl();
    if (articleId) {
        console.log("从URL解析出的文章ID是: " + articleId);
    } else {
        console.log("无法从URL中解析文章ID。");
    }
</script>

场景 推荐方法 示例代码
PHP 代码 $_GET['aid'] 获取 $id = isset($_GET['aid']) ? intval($_GET['aid']) : 0;
模板文件 使用 {dede:field.id/} <p>ID: {dede:field.id/}</p>
JavaScript 通过PHP输出为JS变量 var articleId = "{dede:field.id/}";

根据你的具体需求,选择最适合的方法即可,对于模板开发,强烈推荐使用 {dede:field.id/},对于PHP后端开发,推荐从 $_GET 安全地获取。

-- 展开阅读全文 --
头像
织梦后台文章模板如何自定义发布?
« 上一篇 04-08
织梦dede小说程序如何搭建小说网站?
下一篇 » 04-08

相关文章

取消
微信二维码
支付宝二维码