织梦当前文章Id标签如何获取?

99ANYc3cd6
预计阅读时长 12 分钟
位置: 首页 织梦建站 正文

页 (article_article.htm)

这是最常见的情况,用户正在阅读一篇文章,你需要在文章详情页获取这篇文章自身的ID。

织梦当前文章Id标签
(图片来源网络,侵删)

方法1:使用全局变量 $arcid (最常用、最推荐)

页,系统会自动将当前文章的ID存储在一个名为 $arcid 的PHP全局变量中,你可以在模板文件中直接使用它。

使用方法: 直接在模板文件中写入 {$arcid} 即可。

示例: 假设你想在文章标题下方显示当前文章的ID,可以修改 article_article.htm 模板文件:

<h1>{dede:field.title/}</h1>
<p>文章ID是:<strong>{dede:global name='arcid'/}</strong></p>
{dede:field.body/}

代码解释:

织梦当前文章Id标签
(图片来源网络,侵删)
  • {dede:global name='arcid'/}:这是调用全局变量 arcid 的标准织梦标签语法。
  • {$arcid}:在某些 newer 版本或特定配置下,也可以直接使用这种简写形式,但 {dede:global name='arcid'/} 兼容性最好。

方法2:使用 {dede:field.id/}

{dede:field} 标签用于获取当前文章的字段,id 字段就是文章的ID。

使用方法: 在模板文件中使用 {dede:field.id/}

示例:

<h1>{dede:field.title/}</h1>
<p>文章ID也是:<strong>{dede:field.id/}</strong></p>
{dede:field.body/}

代码解释:

织梦当前文章Id标签
(图片来源网络,侵删)
  • {dede:field.id/}:直接调用文章数据表中的 id 字段,这种方法和方法1在文章内容页中的效果是完全一样的。

在列表页 (list_*.htm)

在列表页,情况会复杂一些,因为列表页会循环显示多篇文章,你不能直接获取一个固定的ID,而是需要在循环的每一次中,获取当前正在被处理的那篇文章的ID。

方法:在循环体内使用 {dede:field.id/}

在列表页的循环标签 {dede:list}{dede:arclist} 内部,{dede:field.id/} 会指向当前循环文章的ID。

使用方法:{dede:list} 循环标签内使用。

示例: 假设你想在列表页的文章标题后面显示对应的ID,可以修改 list_*.htm 模板文件:

<ul>
{dede:list pagesize='10'}
    <li>
        <a href="[field:link/]">[field:title]</a>
        (ID: {dede:field.id/})
    </li>
{/dede:list}
</ul>
<div class="dede_pages">
    <ul>{dede:pagelist listitem="pre,next,end,option" listsize="5"/}</ul>
</div>

代码解释:

  • {dede:list ...}:这是一个循环标签,它会依次取出数据库中的文章。
  • {dede:field.id/}:在循环的每一次执行中,这个标签都会被替换成当前这篇文章的ID,如果循环到第3篇文章,它就会显示第3篇文章的ID。

在PHP代码中获取

如果你需要在自定义的PHP函数或文件中获取当前文章ID,你需要通过PHP代码来获取。

页的PHP文件中 (article.php)

article.php 这个PHP文件中,当前文章ID已经被解析并存储在 $arcid 变量中。

示例:

<?php
// 在 article.php 文件中
$currentArticleId = $arcid;
// 现在你可以在PHP代码中使用 $currentArticleId 这个变量了
echo "当前文章的ID是: " . $currentArticleId;
// 查询这篇相关的文章
$sql = "SELECT * FROM `dede_archives` WHERE id = $currentArticleId AND id != $currentArticleId LIMIT 5";
// ... 执行查询等操作
?>

在列表页的PHP文件中 (list.php)

list.php 中,情况更复杂,因为它处理的是一个列表,你需要先获取列表,然后在循环中获取每一项的ID。

示例:

<?php
// 在 list.php 文件中
require_once(dirname(__FILE__)."/../include/common.inc.php");
// 获取列表数据
$tid = (isset($typeid) && is_numeric($typeid)) ? $typeid : 0;
$dsql->SetQuery("SELECT id, title FROM `dede_archives` WHERE typeid = $tid ORDER BY id DESC");
$dsql->Execute();
while($row = $dsql->GetArray())
{
    // $row['id'] 就是当前循环文章的ID
    $currentArticleId = $row['id'];
    echo "正在处理文章 ID: " . $currentArticleId . ",标题: " . $row['title'] . "<br>";
}
?>

总结与对比

场景 推荐标签/变量 说明
{dede:global name='arcid'/} 最推荐,直接调用系统全局变量,清晰明了。
{dede:field.id/} 同样有效,直接获取文章数据表的ID字段。
列表页 {dede:field.id/} 必须放在 {dede:list}{dede:arclist} 循环标签内部使用。
PHP代码 $arcid article.php 中直接使用。
PHP代码 $row['id'] list.php 的数据库循环中获取。

希望这个详细的解释能帮助你准确地在织梦CMS中获取当前文章的ID!

-- 展开阅读全文 --
头像
dede三级栏目循环如何实现?
« 上一篇 03-06
织梦后台如何设置简洁页面?
下一篇 » 03-06

相关文章

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