广告位招租 qq245909083

dedecms 导航判断是否含有子栏目

分享时间:2017-12-23 1138 热度℃
做导航下拉菜单调用子栏目时,通常我们的做法是将菜单包含进{dede:channel}之中,这样可以用type='son'来自动判断是否含有子栏目。但也另一种情况,导航菜单有固定的容器,子栏目列表在其内部,这时子栏目菜单框架不能放进{dede:channel}里做列表做整个的循环调用,所以需要一种方法来在{dede:channel}之外就就判断是否含有子栏目,来决定是否显示子栏目菜单的外部容器。
代码例子:
{dede:channelartlist type='top' row='7'}
<li class="current"><a href="{dede:field name='typeurl'/}" ><strong><span>{dede:field name='typename'/}</span><span class="active">{dede:field name='typename'/}</span></strong></a>

{dede:field name=typeid runphp="yes"}
global $dsql;
$sql = "SELECT id From `#@__arctype` WHERE reid='@me' And ishidden<>1 order by sortrank asc limit 0, 100 ";
$row = $dsql->GetOne($sql);
@me=is_array($row)?'<div class="nav">':'';
{/dede:field}

{dede:channel type='son' noself='yes'}
<div class="nav_li">
<span><a href="[field:typeurl/]">[field:typename/]</a></span>               
</div>
{/dede:channel}

{dede:field name=typeid runphp="yes"}
global $dsql;
$sql = "SELECT id From `#@__arctype` WHERE reid='@me' And ishidden<>1 order by sortrank asc limit 0, 100 ";
$row = $dsql->GetOne($sql);
@me=is_array($row)?'</div>':'';
{/dede:field}

</li>
{/dede:channelartlist}     
复制代码
其中包含了两段判断代码,其含义相似,只是判断结果不同,第一段判断含有子栏目输出子栏目菜单外部容器开始<div class="nav">,第二段输出结束</div>。
即如果含有子栏目则输出这个<div class="nav">……</div>子栏目菜单外部容器,如果没有,那就是空。
返回顶部