dedecms获取当前栏目的顶级栏目的二级栏目的所有子栏目及文章

各位,大家好,这个功能是我在做织梦时用到的功能,不知道我的标题说清楚没有。这里解释一下:
一级栏目(顶级栏目)
  二级栏目1
    三级栏目1.1
     四级栏目1.1.1
      文章01…
  二级栏目2
    三级栏目2.1
     四级栏目2.1.1
      文章01…

当我点击四级栏目1.1.1的时候,这里获取到的是二级栏目1,即当前栏目的顶级栏目的二级栏目,又比如:我点击四级栏目2.1.1的文章的时候,这里获取的也是二级栏目2,就是这个意思。不管点击什么都获取到当前栏目的顶级栏目的二级栏目,不知道大家是否明白?

注意:我这里只做到了三级栏目(不包含顶级栏目),就是只能获取三级栏目以内的名称及下面的所有文章。如果是二级,那就显示二级栏目及它的文章。

{dede:channelartlist typeid='mflag' currentstyle='current'}
<li class='a_a1 {dede:field.currentstyle/}'><a href="{dede:field name='typeurl'/}">{dede:field name='typename' /}</a>
<!-- 判断当前栏目是否下一级 -->
{dede:field name=typeid runphp="yes"}
global $dsql;
$sql = "SELECT id From `dede_arctype` WHERE reid='@me' And ishidden<>1 order by sortrank asc limit 0, 100 ";  
$is_row = $dsql->GetOne($sql); 
if(is_array($is_row)){
	@me='';
}else{
	$sql = "SELECT arc.* FROM `dede_archives` arc where arc.arcrank>-1 AND arc.typeid = @me ORDER BY arc.id desc";
	$dsql->SetQuery($sql);
	$dsql->Execute('t');
	$result = '<ul>';
	while($row = $dsql->GetArray('t'))
		{
			$arcurl = GetOneArchive($row['id']);
			$result .= <<< TPL
			<li class="a_a2"><a href="{$arcurl['arcurl']}">{$row['title']}</a></li>
			TPL;
		}
	$result.='</ul>';
	@me = $result;							
	}
{/dede:field}          
            {dede:sql sql='select * from dede_arctype where reid =~id~ '}
			<ul>
                <li class="a_a2"><a href="[field:typeurl/]">[field:typename/]</a>
					<ul>
						[field:id runphp=yes]
						global $dsql;
						$sql = "SELECT arc.* FROM `dede_archives` arc where arc.arcrank>-1 AND arc.typeid = @me ORDER BY arc.id desc";
						$dsql->SetQuery($sql);
						$dsql->Execute('t');
						$result = '';
						while($row = $dsql->GetArray('t'))
						{
						$arcurl = GetOneArchive($row['id']);
						$result .= <<< TPL
						<li class="a_a3"><a href="{$arcurl['arcurl']}">{$row['title']}</a></li>
						TPL;
						}
						@me = $result;
						[/field:id]
				  	</ul>
              </li>
			  </ul>
              {/dede:sql}            
          </li>
{/dede:channelartlist}

解释:
以上是代码中第一行typeid=‘mflag’ 它是代表获取当前栏目的顶级栏目的二级栏目的ID,这里要增加代码。
在include/taglib/channelartlist.lib.php中增加以下代码:

	 if($typeid=='mflag'){
		$mrow = $dsql->GetOne("SELECT reid,topid FROM dede_arctype WHERE id= '$tid' ");
		if ($mrow['reid'] == $mrow['topid']){
			$typeid=$tid;
		}else{
			$m2row = $dsql->GetOne("SELECT reid,topid,id FROM dede_arctype WHERE id= $mrow[reid]");
			if($m2row['reid']==$m2row['topid']){
				$typeid=$m2row['id'];
			}else{
				$m3row = $dsql->GetOne("SELECT reid,topid,id FROM dede_arctype WHERE id= $m2row[reid]");
				if($m3row['reid']==$m3row['topid']){
					$typeid=$m3row['id'];
				}
			}		
		}
	 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lizige2008

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值