织梦循环调用所有栏目的方法(无限级调用)

2018-11-18 二次开发 浏览 手机预览
文章来源:http://www.imtr.cn/html/n216.html

摘要:本文分享2种方法,调用织梦所有栏目,循环无限调取。


一级、二级、三级栏目标签的嵌套使用方法

<ul>
	{dede:channelartlist row='8' 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 `dede_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 .= "<li><a href='{$typeurl}'>{$typename}</a></li>";
				}
				@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 `dede_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 `dede_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]


栏目无限分类调取方法,自定义函数递归法

在 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 `dede_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()'/}

原文地址:http://www.imtr.cn/html/n216.html
  • 如果你的问题还没有解决,可以点击页面右侧的“ ”,站长收到问题后会尽快回复解决方案到你的邮箱。
  • 创造始于问题,有了问题才会思考,有了思考,才有解决问题的方法,才有找到独立思路的可能。 —— 陶行知