首页 > CMS教程 > dedeCMS > 正文

织梦dedecms如何判断当前栏目是否有子栏目

2017-04-03 来源:网络 作者:佚名 点击: 评论:
如何判断当前栏目是否有子栏目?怎么判断导航菜单是否有子栏目,有就显示,否则不显示的代码方法。
织梦dedecms如何判断当前栏目是否有子栏目

织梦dedecms判断导航菜单是否有子栏目,有就显示,否则不显示的代码方法。

可以通过下面的方法来实现:

1
2
3
4
5
6
{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 ";
    $row = $dsql->GetOne($sql);      
@me=is_array($row)?'有下级':'没下级';
{/dede:field}

代码示例(注意不能用双引号):

{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=lich>':'<div class=lichbad>';
{/dede:field}

织梦官方默认模版导航菜单的显示为:

首先是添加输出二级栏目的代码如下:

  1. 主页
  2. {dede:channelartlist typeid='top' currentstyle='on'}
  3.     {dede:field name='typename'/}
  4. {/dede:channelartlist}

这时候如顶级栏目有子栏目,子栏目就会输出并显示出来,如果没有子栏目也不显示子栏目,但是有一个很小的缺点:当顶级栏目没有子栏目时,就会输出多余的的空标签,很少不美观,CSS样式也会影响显示效果,怎样让没有子栏目的时候不显示空白多余的”标签对“ 呢?

首先要判断时候有子栏目,代码:

{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)?'有下级':'没下级';
{/dede:field}

判断时候有下级的代码木有问题了,但是又有新问题了,织梦中唯一能嵌套的标签是{dede:channelartlist}{/dede:channelartlist},而上面的判断语句代码不能嵌套{dede:channel type=’son’},于是想到上面判断语句输出的字符串替换成包含在子栏目列表的外层的和标签,因为分别在子栏目循环的开始和结束,所以判断语句代码就写了两次,分别在子栏目循环的开始和结束,最终的代码如下:

1
2
3
4
5
6

{dede:channelartlist typeid='top' currentstyle='on'} 

    {dede:field name='typename'/} 
 ​   {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)?'':'';
    {/dede:field}
    {dede:channel type='son' noself='yes' currentstyle="~typename~"}
        [field:typename/] ​
    {/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)?'':''; 

 {/dede:field}

{/dede:channelartlist}


文章转载请注明来自天晟网络 > CMS教程 > dedeCMS >
标题:织梦dedecms如何判断当前栏目是否有子栏目
网址:http://www.timsion.com/dedecms/36689.html

关键词:dedecms 判断 当前栏目 子栏目

上一篇:DedeCMS如何实现导航条悬停显示二级栏目下拉菜单
下一篇:最后一页

免责声明:以上内容来自互联网和用户投稿,不代表本站的观点和立场,版权归原作者所有,如有侵权,请与我们联系。