DedeCms织梦二次开发网-Dede织梦工场-DedeCms教程-Dede二次开发-DedeCms二次开发-Dede模块开发-Dede插件开发-Dede标签开发DedeCms织梦二次开发网

DedeCms织梦调用所有栏目(无限级栏目输出)

摘要:分享2种方法获取织梦所有栏目(无限级栏目输出) 第一种自定义函数递归法 适用于前端简单样式用户,在 include/extend.func.php 最下面添加 /*** 取出所有分类* @param int $channel 频道ID* @return

分享2种方法获取织梦所有栏目(无限级栏目输出)

第一种自定义函数递归法

适用于前端简单样式用户,在 include/extend.func.php 最下面添加

/**
* 取出所有分类
* @param     int   $channel  频道ID
* @return    string
* 调用{dede:global.getalltype function='getalltype()'/}
*/

function getalltype($channel=0,$line=10)
{
	$line = empty($line) ? 10 : $line;
	global $dsql,$result;
	
	$dsql->SetQuery("SELECT id,typename,typenamedir,typelitpic,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
            FROM `SzsFox_arctype` WHERE reid='$channel' And ishidden<>1 order by sortrank asc limit 0, $line ");
	$dsql->Execute($channel);
	if($dsql->GetTotalRow($channel)>0)
	{
		$result .= "<ul>\r\n"; 
		while($row = $dsql->GetArray($channel))
		{
			$id = $row['id'];
			$typename = $row['typename'];
			$typelink = GetOneTypeUrlA($row);

			$result .= "	<li>\r\n";
			$result .= "		<a href='{$typelink}' target='_blank'>{$typename}</a>\r\n";
			getalltype($id,$line);
			$result .= "	</li>\r\n";
		}
        $result .= "</ul>\r\n";
	}
	return $result;
}

前台模板调用标签

{dede:global.getalltype function='getalltype()'/}

第二种标签嵌套法

适用于只调用出一级、二级、三级、四级的用户,直接在模板里写
<ul>
	{dede:channelartlist row=7 typeid=top}
	<!-- 顶级 -->
	<li class="top">
		<a href="{dede:field.typeurl/}" >{dede:field name='typename'/}</a>
		<ul class="sub">
		{dede:channel type=son noself=yes}
		<!-- 二级 -->
		<li>
		<a href="[field:typeurl/]"  title="[field:typename/]">[field:typename/]</a>
		<ul>
<!-- 三级 -->
[field:id runphp=yes]
global $dsql;
$sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `SzsFox_arctype` WHERE reid=@me And ishidden<>1 order by sortrank asc limit 0,10";
$dsql->SetQuery($sql);
$dsql->Execute('t');
$result = '';
while($row = $dsql->GetArray('t'))
{
    $typename = $row['typename'];
    $typeurl = GetOneTypeUrlA($row);
$result .= <<< TPL
<li><a href="{$typeurl}">{$typename}</a></li>
TPL;
}
@me = $result;
[/field:id]
		</ul>
		</li>
		{/dede:channel}
		</ul>
	</li>    
	{/dede:channelartlist}
</ul>
上面的是输出到三级栏目,如果需要四级栏目可以这样写
<!-- 三级/四级 -->
[field:id runphp=yes]
global $dsql;
$sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `SzsFox_arctype` WHERE reid=@me And ishidden<>1 order by sortrank asc limit 0,10";
$dsql->SetQuery($sql);
$dsql->Execute('t');
$result = '';
while($row = $dsql->GetArray('t'))
{
    $row['typeurl'] = GetOneTypeUrlA($row);
	$result .= "<a href='{$row[typeurl]}'>{$row[typename]}</a>";
	//四级
	$nsql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `SzsFox_arctype` WHERE reid=$row[id] And ishidden<>1 order by sortrank asc limit 0,10";
	$dsql->SetQuery($nsql);
	$dsql->Execute('n');
	while($nrow = $dsql->GetArray('n'))
	{
		$nrow['typeurl'] = GetOneTypeUrlA($nrow);
		$result .= "<a href='{$nrow[typeurl]}'>{$nrow[typename]}</a>";
	}
}
@me = $result;
[/field:id]

效果图

DedeCms织梦调用所有栏目(无限级栏目输出)

DedeCMS织梦工场QQ群

群号(23871657) DedeCMS织梦工场
只适用于讨论dedecms二次开发相关话题,其他闲聊、广告、斗图、捣乱请自重自觉,谢谢合作!

不忘初心 、方得始终

DedeCMS织梦工场 - 致力于把最实用的DedeCms二次开发教程,DedeCms二次开发视频,DedeCms二次开发实例经验,分享给最需要的站长,希望每一位来访的站长都能有所收获!

如果您认为本网站的内容质量不错或者读后成功解决你心中的难题,觉得收获很大,那么不妨小额赞助一下,让我们有动力继续写出高质量的教程与更棒的程序教程。打赏记录

赞助方式

donate_zhifubao 支付宝手机客户端扫描上面的二维码进行赞助

donate_weixin 微信手机客户端扫描上面的二维码进行赞助

来源:DedeCms织梦工场 » DedeCms织梦调用所有栏目(无限级栏目输出)
据说喜欢分享的,后来都成了大神: 更多