织梦dedecms调用三四级子栏目的完美教程

92建站   2021-05-05   收藏本文

本文介绍了织梦dedecms调用三四级子栏目的完美教程,教程给出了两种方法,打开这个文件extend.func.php,在里面添加教程给出的代码,然后使用{dede:global.getalltype function= getalltype() }这个调用就可以了。

有人问,织梦dedecms调用三四级子栏目怎么实现,92建站小编今天就和大家介绍织梦调用三四级子栏目的方法。

先来看看效果图:

织梦调用三四级子栏目

(此图片来源于网络,如有侵权,请联系删除! )

实现方法:

第一种自定义函数递归法

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

/**

* 取出所有分类

* @param     int   $channel  频道ID

* @return    string  www.dede58.com织梦模板下载

* 调用{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()'/}

第二种标签嵌套法

适用于只调用出一级、二级、三级、四级的用户,直接在模板里写

<ul>

{dede:channelartlist row=7 typeid=top}

<!-- 顶级 -->

<li>

<a href="{dede:field.typeurl/}" >{dede:field name='typename'/}</a>

<ul>

{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 .= <<< 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 `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]

这样就可以了。

上面就是织梦调用三四级子栏目的介绍,若有疑问可以找小编进一步探讨交流~

展开