如何在织梦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(织梦内容管理系统)构建,这是一个流行的开源PHP网站管理平台,适用于创建和管理动态网站。如果您需要进一步的帮助,请提供更多详细信息。

    2024-11-20
    012
  • DEDECMS中的时间显示如何设置为多少分钟前?

    您的问题似乎不完整,请提供更详细的信息或上下文,以便我能更准确地回答您。如果您是在询问dedecms(一个内容管理系统)的安装、配置、使用或其他相关问题,请具体说明需要了解的内容,我会很乐意为您提供帮助。

    2024-11-08
    020
  • Dede如何查看文章数量?

    在 DedeCMS(织梦内容管理系统)中,查看文章数量的方法如下:,,1. 登录后台管理系统。,2. 进入“内容管理”模块。,3. 选择“文章管理”。,4. 在右侧列表中即可看到所有文章的标题、作者、发布时间等信息。

    2024-11-07
    019
  • 织梦DedeCMS核心目录知识有哪些要点?

    织梦DedeCMS核心目录知识大全背景介绍织梦DedeCMS是一款流行的开源内容管理系统(CMS),广泛用于企业建站和信息管理,了解其目录结构和文件功能对于开发者进行二次开发、安全管理和界面定制至关重要,本文将详细介绍织梦DedeCMS的核心目录结构及其主要文件的作用,以帮助开发者更好地理解和使用该CMS,目录……

    2024-11-02
    0307

发表回复

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

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