如何在织梦dedecms中调用特定的三级子栏目或多个栏目进行导航设置?

在织梦dedecms中,要调用指定三级子栏目或多个栏目导航,可以使用以下代码:,,“php,{dede:channel type='top' row='10' currentstyle='yes'},[field:typename/],, {dede:channel type='son' row='10' currentstyle='yes'},[field:typename/], {dede:channel type='son3' row='10' currentstyle='yes'},[field:typename/], {/dede:channel}, {/dede:channel},,{/dede:channel},`,,这段代码会生成一个包含指定三级子栏目或多个栏目导航的列表。请根据实际需求修改row`属性的值,以控制显示的栏目数量。

在织梦dedecms中,调用指定三级子栏目或多个栏目导航的方法主要通过修改channel.lib.php文件和编写特定的标签代码实现,以下是详细的步骤和示例:

如何在织梦dedecms中调用特定的三级子栏目或多个栏目进行导航设置?

调用顶级、二级和三级栏目的方法

1、调用顶级栏目

使用以下标签可以调用顶级栏目:

     {dede:channel type='top' currentstyle="<li class='thisclass'><a href='~typelink~'>~typename~</a> </li>"}

参数说明:typeid表示栏目ID;reid表示上级栏目ID;row表示调用栏目数;col表示分多少列显示;type表示类型(son表示下级栏目,self表示同级栏目,top表示顶级栏目);currentstyle表示应用样式。

2、调用带有二级子栏目的栏目

使用以下标签可以调用带有二级子栏目的栏目:

     {dede:channelartlist typeid='1,2,3,6,7,10,8,11' row='10'}
     <li class="tab dropdown">
       <a id="{dede:field name='id'/}" href="{dede:field name='typeurl'/}" class="tablink arwlink">
         {dede:field name='typename'/}
       </a>
       <ul class="subnav">
         {dede:channel type='son' noself='yes'}
         <a href="[field:typelink/]">[field:typename/]</a>
         {/dede:channel}
       </ul>
     </li>
     {/dede:channelartlist}

对于没有子栏目的顶级栏目,可以使用以下标签:

     {dede:type typeid=‘指定栏目的id’}
     <li>
       <a href="[field:typelink /]">[field:typename /]</a>
     </li>
     {/dede:type}

3、调用带有三级子栏目的栏目

如何在织梦dedecms中调用特定的三级子栏目或多个栏目进行导航设置?

使用以下标签可以调用带有三级子栏目的栏目:

     <li>
       <h3>
         {dede:type typeid='2'}<a href='[field:typelink/]' class="depth_1">[field:typename/]</a>{/dede:type}
       </h3>
       <ul class="children" style="display: none; ">
         {dede:channelartlist typeid='top' typeid='2'}
         <li>
           <h3 >
             <a href='{dede:field name='typeurl'/}' class="depth_2">
               <span class="icon10"></span>{dede:field name='typename'/}
             </a>
           </h3>
           <ul>
             {dede:sql sql='Select * from dede_arctype where reid=~id~ ORDER BY id limit 0,20'}
             <li><a href="[field:typedir function='str_replace("{cmspath}","",@me)'/]" class="depth_3">[field:typename/]</a></li>
             {/dede:sql}
           </ul>
         </li>
         {/dede:channelartlist}
       </ul>
     </li>

修改channel.lib.php文件以实现多级导航

1、修改文件路径

修改includetaglib目录下的channel.lib.php文件。

2、替换代码

将以下代码复制替换到channel.lib.php文件中:

     function lib_channel(&$ctag,&$refObj)
     {
     global $_sys_globals,$envs,$dsql;
     $attlist = "typeid|0,reid|0,row|100,col|1,type|son,currentstyle|";
     FillAttsDefault($ctag>CAttribute>Items,$attlist);
     extract($ctag>CAttribute>Items, EXTR_SKIP);
     $innertext = $ctag>GetInnerText();
     $cacheid = trim($cacheid);
     if($cacheid !='') {
     $likeType = GetCacheBlock($cacheid);
     if($likeType != '') return $likeType;
     }
     $reid = 0;
     $topid = 0;
     if(empty($typeid) && $envs['typeid']!=0)
     {
     $typeid = $envs['typeid'];
     $reid = $envs['reid'];
     }else{
     $reid=0;
     }
     if($type==''||$type=='sun') $type="son";
     if($innertext=='') $innertext = GetSysTemplets("channel_list.htm");
     if($reid==0 && $typeid>0)
     {
     $dbrow = $dsql>GetOne("Select reid From dede_arctype where id='$typeid' ");
     if(is_array($dbrow)) $reid = $dbrow['reid'];
     }
     $likeType = '';
     if($type=='top')
     {
     $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description
     From dede_arctype where reid=0 And ishidden<>1 order by sortrank asc limit 0,$row";
     }
     else if($type=="son")
     {
     //if($_sys_globals['typeid']>0) $typeid = $_sys_globals['typeid'];
     if($typeid==0) {
     return '';
     }
     $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description
     From dede_arctype where reid='$typeid' And ishidden<>1 order by sortrank asc limit 0,$row";
     }
     else if($type=="self")
     {
     if($reid==0) {
     return '';
     }
     $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description
     Fromdede_arctype where reid='$reid' And ishidden<>1 order by sortrank asc limit 0,$row";
     }
     //And id<>'$typeid'
     $needRel = false;
     $dtp2 = new DedeTagParse();
     $dtp2>SetNameSpace("field","[","]");
     $dtp2>LoadSource($innertext);
     $dsql2 = clone $dsql;
     $dsql>SetQuery($sql);
     $dsql>Execute();
     $line = $row;
     //检查是否有子栏目,并返回rel提示(用于二级菜单)
     if(ereg(':rel', $innertext)) $needRel = true;
     if(empty($sql)) return '';
     $dsql>SetQuery($sql);
     $dsql>Execute();
     $totalRow = $dsql>GetTotalRow();
     $GLOBALS['autoindex'] = 0;
     for($i=0;$i < $line;$i++)
     {
     if($col>1) $likeType .= "
for($j=0;$j
     }else{
     r
";
     if($row=$dsql>GetArray())
     {
     $row['sonids'] = $row['rel'] = '';
     if($needRel)
     {
     $row['sonids'] = GetSonIds($row['id'], 0, false);
     if($row['sonids']=='') $row['rel'] = '';
     else $row['rel'] = " rel='dropmenu{$row['id']}'";
     }
     //处理同级栏目中,当前栏目的样式
     if( ($row['id']==$typeid || ($topid==$row['id'] && $type=='top') ) && $currentstyle!='' )
     {
     if($currentstyle!='')
     {
     $linkOkstr = $currentstyle;
     $row['typelink'] = GetOneTypeUrlA
     }
     }
     }//end for line
     return $likeType;
     }//end func

这段代码可以帮助实现根据不同类型获取顶级栏目和子栏目列表,适用于无限极分类,通过实例代码展示了如何使用[type]参数控制展示层级和样式,适合多级导航需求。

相关问答FAQs

如何在织梦dedecms中调用特定的三级子栏目或多个栏目进行导航设置?

1、如何在DEDECMS中调用多个指定的顶级栏目导航?:要在DEDECMS中调用多个指定的顶级栏目导航,可以使用以下标签:

   {dede:type typeid='指定栏目的id'}
   <a href="[field:typelink /]">[field:typename /]</a>
   {/dede:type}

typeid参数用于指定要调用的顶级栏目的ID,如果有多个栏目需要调用,可以在页面上多次使用这个标签,每次指定不同的typeid值。

2、如何在DEDECMS中调用带有二级子栏目的栏目?:要在DEDECMS中调用带有二级子栏目的栏目,可以使用以下标签:

   {dede:channelartlist typeid='顶级栏目的id' row='10'}
   <li class="tab dropdown">
     <a id="{dede:field name='id'/}" href="{dede:field name='typeurl'/}" class="tablink arwlink">
       {dede:field name='typename'/}
     </a>
     <ul class="subnav">
       {dede:channel type='son' noself='yes'}
       <a href="[field:typelink/]">[field:typename/]</a>
       {/dede:channel}
     </ul>
   </li>
   {/dede:channelartlist}

typeid参数用于指定要调用的顶级栏目的ID,row参数用于指定调用的栏目数量,这段代码会生成一个带有二级子栏目的栏目导航,包括顶级栏目及其所有子栏目。

调用方式 代码示例 说明
调用指定三级子栏目导航 {dede:channel type='son' id='1' subid='2' /} type=’son’ 表示调用子栏目,id=’1′ 表示调用一级栏目ID,subid=’2′ 表示调用二级栏目ID的三级子栏目导航
调用多个栏目导航 {dede:channel type='son' id='1,2,3' /} type=’son’ 表示调用子栏目,id=’1,2,3′ 表示调用多个一级栏目ID的子栏目导航,多个ID之间用逗号分隔
调用指定三级子栏目导航(条件筛选) {dede:channel type='son' id='1' subid='2' where='keywords="关键词"' /} type=’son’ 表示调用子栏目,id=’1′ 表示调用一级栏目ID,subid=’2′ 表示调用二级栏目ID的三级子栏目导航,where属性用于条件筛选,keywords表示关键词
调用多个栏目导航(条件筛选) {dede:channel type='son' id='1,2,3' where='keywords="关键词"' /} type=’son’ 表示调用子栏目,id=’1,2,3′ 表示调用多个一级栏目ID的子栏目导航,where属性用于条件筛选,keywords表示关键词,多个ID之间用逗号分隔

代码仅供参考,具体使用时可能需要根据实际情况进行调整。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1200833.html

(0)
未希的头像未希新媒体运营
上一篇 2024-10-11 02:10
下一篇 2024-10-11 02:12

相关推荐

  • 如何解决在网站子目录安装DedeCMS后遇到的网页布局混乱问题?

    在使用dedecms教程安装织梦系统时,如果选择在网站子目录进行安装,可能会因为路径设置不正确或CSS样式表未正确加载导致网页布局混乱。请检查路径配置和文件权限,确保所有必要的文件都能被正确访问和执行。

    2024-08-31
    017
  • 在dedecms中实现栏目名称调用的具体方法是什么?

    在DedeCMS中调用栏目名称,通常可以通过以下几种方式实现:1. 使用{dede:field name=’catname’/}这是最常见的方法,通过字段标签直接调用当前栏目的名称,{dede:field name=’catname’/}2. 使用{dede:field name=’typeid’/} 标签结合……

    2024-10-03
    010
  • 如何在DEDE中高效批量修改已发布的内容?

    在DEDECMS中,可以通过SQL语句批量修改已发布的内容。具体操作如下:,,1. 登录到DEDECMS后台,进入“系统管理”˃“SQL命令行工具”。,2. 在“运行SQL语句”框中输入以下SQL语句:,,“sql,UPDATE dede_archives SET content = REPLACE(content, ‘需要替换的文本’, ‘替换后的文本’) WHERE id IN (SELECT id FROM dede_archives WHERE channel = ‘频道ID’);,`,,3. 将上述SQL语句中的需要替换的文本、替换后的文本和频道ID`替换为实际需要的值。,4. 点击“运行”按钮,执行SQL语句,完成批量修改替换已发布的内容。

    2024-10-09
    02
  • Dedecms时间标签样式如何全面掌握?

    Dedecms时间标签样式大全提供了丰富的选择,满足不同网站设计需求。

    2024-10-10
    05

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

免费注册
电话联系

400-880-8834

产品咨询
产品咨询
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入