当前位置:首页 > 行业动态 > 正文

如何在DedeCMS中调用当前栏目的子栏目?

方法一:使用内置函数 channelunit();方法二:通过标签` 和属性rel=”subcate”`实现。

在DedeCMS中,调用当前栏目的子栏目可以通过多种方法实现,以下是两种主要的方法:

方法一:使用dede:channel标签

1、基本语法

{dede:channel type='son' reid='顶级栏目ID' row='显示条数' noself='yes'}

要调用顶级栏目ID为49的子栏目,可以这样写:

 {dede:channel type='son' reid='49' row='99' noself='yes'}
     <a href="[field:typeurl/]" title="[field:typename/]">[field:typename/]</a>
     {/dede:channel}

2、参数说明

type='son':表示调用子栏目

reid='顶级栏目ID':指定顶级栏目的ID。

row='显示条数':指定要显示的子栏目数量。

noself='yes':不包含自身,即不包含顶级栏目本身。

3、示例代码

假设有一个顶级栏目“站长新闻”,其ID为3,要调用其下的子栏目,可以使用以下代码:

如何在DedeCMS中调用当前栏目的子栏目?  第1张

 {dede:channel type='son' reid='3' row='99' noself='yes'}
     <a href="[field:typeurl/]" title="[field:typename/]">[field:typename/]</a><br />
     {/dede:channel}

方法二:使用dede:sonchannel标签

1、基本语法

{dede:sonchannel}

 {dede:sonchannel}
     <a href='[field:typeurl/]'>[field:typename/]</a>
     {/dede:sonchannel}

2、参数说明

dede:sonchannel标签用于直接调用当前栏目的子栏目,不需要额外指定顶级栏目ID等参数。

3、示例代码

假设要调用当前栏目的子栏目,可以直接使用以下代码:

 {dede:sonchannel}
     <a href='[field:typeurl/]'>[field:typename/]</a>
     {/dede:sonchannel}

方法三:结合dede:channelartlist和dede:arclist标签调用子栏目及其文章

1、基本语法

如何在DedeCMS中调用当前栏目的子栏目?  第2张

{dede:channelartlist typeid='顶级栏目ID,子栏目ID' row='显示条数'}

{dede:arclist type='son' row='显示条数'}

2、示例代码

假设有一个顶级栏目“站长新闻”,其ID为3,要调用其下的子栏目及其文章,可以使用以下代码:

 {dede:channelartlist typeid='3,0' row='99'}
     <ul>
       {dede:arclist type='son' row='8'}
         <li><a href="[field:arcurl/]">[field:title/]</a></li>
       {/dede:arclist}
     </ul>
     {/dede:channelartlist}

相关问答FAQs

1、如何调用当前栏目的子栏目及其文章?

你可以使用{dede:channelartlist typeid='顶级栏目ID,子栏目ID' row='显示条数'}结合{dede:arclist type='son' row='显示条数'}标签来实现。

 {dede:channelartlist typeid='3,0' row='99'}
     <ul>
       {dede:arclist type='son' row='8'}
         <li><a href="[field:arcurl/]">[field:title/]</a></li>
       {/dede:arclist}
     </ul>
     {/dede:channelartlist}

2、如何在列表页或内容页调用同级栏目的文章?

你可以修改includetaglibchannelartlist.lib.php文件,添加type属性,然后在列表页或内容页使用{dede:channelartlist type='reid' row='5'}来调用。

如何在DedeCMS中调用当前栏目的子栏目?  第3张

 {dede:channelartlist type='reid' row='5'}
     底层循环代码
     {/dede:channelartlist}

下面是使用dedecms调用当前栏目的子栏目的两种方法的表格说明:

| 方法 | 描述 | 代码示例 |

| | | |

| 方法一:使用channel_archives.html | 通过channel_archives.html文件调用当前栏目的子栏目信息,并动态显示子栏目内容。 |

<?php
// 引入dedecms配置文件
include_once(DEDEINC.'/dedecms.php');
include_once(DEDEINC.'/channelunit.php');
// 获取当前栏目ID
$id = $cid;
// 获取当前栏目信息
$csql = "SELECT * FROM#@__arctype WHERE id='$id'";
$cquery = $dsql>query($csql);
$carr = $dsql>getOne($csql);
// 获取子栏目信息
$ssql = "SELECT * FROM#@__arctype WHERE pid='$id'";
$squery = $dsql>query($ssql);
while ($srow = $dsql>getOne($squery)) {
    // 显示子栏目信息
    echo "<li><a href='" . GetArchiveUrl($srow['id']) . "'>" . $srow['typename'] . "</a></li>";
}
?>

| 方法二:使用channeltype.php | 通过channeltype.php文件调用当前栏目的子栏目信息,并动态显示子栏目内容。 |

<?php
// 引入dedecms配置文件
include_once(DEDEINC.'/dedecms.php');
include_once(DEDEINC.'/channeltype.php');
// 获取当前栏目ID
$id = $cid;
// 获取当前栏目信息
$csql = "SELECT * FROM#@__arctype WHERE id='$id'";
$cquery = $dsql>query($csql);
$carr = $dsql>getOne($csql);
// 获取子栏目信息
$ssql = "SELECT * FROM#@__arctype WHERE pid='$id'";
$squery = $dsql>query($ssql);
while ($srow = $dsql>getOne($squery)) {
    // 显示子栏目信息
    echo "<li><a href='" . GetArchiveUrl($srow['id']) . "'>" . $srow['typename'] . "</a></li>";
}
?>

两种方法都可以实现调用当前栏目的子栏目信息,并动态显示子栏目内容,你可以根据自己的需求选择合适的方法。

0