dedecms获取上级栏目id
时间 : 2023-12-21 19:42:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

最佳答案

在DedeCMS中,想要获取上级栏目的ID,可以通过以下几种方法:

方法一:使用PHP代码查询数据库

在dedecms的数据库中,栏目信息保存在`dede_archives`表和`dede_arctype`表中。可以通过以下代码来获取上级栏目的ID:

$aid = $_GET['aid']; // 获取当前栏目的ID

$sql = "SELECT reid FROM dede_arctype WHERE id = (SELECT typeid FROM dede_archives WHERE id = $aid)";

$result = $dsql->GetOne($sql);

$reid = $result['reid']; // 获取上级栏目的ID

方法二:使用DedeCMS自带的函数

DedeCMS提供了`GetOneType($id)`函数用于获取指定ID的栏目信息。可以使用以下代码来获取上级栏目的ID:

$aid = $_GET['aid']; // 获取当前栏目的ID

$arc = GetOneArchive($aid);

$typeid = $arc['typeid']; // 获取当前栏目的typeid

$type = GetOneType($typeid);

$reid = $type['reid']; // 获取上级栏目的ID

方法三:使用PHP代码递归查询上级栏目

你也可以通过PHP代码递归查询上级栏目的ID。可以使用以下代码来实现:

function getSuperiorCategory($typeid, &$categoryIds) {

global $dsql;

$sql = "SELECT `id`, `reid` FROM `dede_arctype` WHERE `id` = $typeid";

$result = $dsql->GetOne($sql);

if ($result['reid'] != 0) {

$categoryIds[] = $result['reid'];

getSuperiorCategory($result['reid'], $categoryIds);

}

}

$aid = $_GET['aid']; // 获取当前栏目的ID

$typeid = GetOneArchive($aid)['typeid']; // 获取当前栏目的typeid

$categoryIds = [];

getSuperiorCategory($typeid, $categoryIds);

// 上级栏目的ID数组

$reid = end($categoryIds);

以上是三种获取上级栏目的ID的方法,你可以根据自己的需要选择其中一种方法来实现。

其他答案

在dedecms中,获取上级栏目ID可以通过以下步骤实现:

1. 首先,我们需要获取当前栏目的ID,可以使用`$typeid = $GLOBALS['typeid'];`来获取。

2. 接下来,我们需要获取当前栏目的父栏目ID,可以通过以下代码实现:

```php

$row = $dsql->GetOne("SELECT * FROM `#@__arctype` WHERE id = {$typeid}");

$reid = $row['reid'];

3. 最后,我们可以通过获取到的父栏目ID,再次获取上级栏目的ID,可以使用以下代码获取:

```php

$row = $dsql->GetOne("SELECT id FROM `#@__arctype` WHERE id = {$reid}");

$reid2 = $row['id'];

通过以上步骤,我们就能够获取到上级栏目的ID了。可以根据具体需要进行相应的处理。