详解织梦dedecms5.7 无限级多级栏目菜单调用方法

这篇具有很好参考价值的文章主要介绍了详解织梦dedecms5.7 无限级多级栏目菜单调用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以前在用到5.7无限级栏目列表菜单时下载了网上的资料都未成功,因此我参考网上及dedecms本身的channel.lib.php及cattree.lib.php制作了调用标签。

1、在include\taglib建立randomartlist.lib.php

内容如下:

  <?php if(!defined('DEDEINC')) exit('Request Error!');
 
function lib_randomartlist(&$ctag, &$refObj)
{
    global $dsql;
    //属性处理
     //topid 指定顶级树 id ,指定后,前一个属性将无效
    $attlist="typeid|0,showall|,currentstyle|,cacheid|";
    FillAttsDefault($ctag->CAttribute->Items,$attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $revalue = '';
    //读取固定的缓存块
    $cacheid = trim($cacheid);
    if($cacheid !='') {
        $revalue = GetCacheBlock($cacheid);
        if($revalue != '') return $revalue;
    }
    //如果属性里没指定栏目id,从引用类里获取栏目信息
    if(empty($typeid))
    {
        if( isset($refObj->TypeLink->TypeInfos['id']) )
        {
            $typeid = $refObj->TypeLink->TypeInfos['id'];
            $reid = $refObj->TypeLink->TypeInfos['reid'];
            $topid = $refObj->TypeLink->TypeInfos['topid'];
        }
        else {
          $typeid = 0;
      }
    }
    else
    {
 
        $row2 = $dsql->GetOne("SELECT reid,topid,channeltype,ispart FROM `dede_arctype` WHERE reid='$topid' ");
        if(!is_array($row2))
        {
            $typeid = $reid = $topid = $channeltype = $ispart = 0;
        } else {
            $reid = $row2['reid'];
            $channeltype = $row2['channeltype'];
            $ispart = $row2['ispart'];
            $typepid = $row2['id'];
        }
    }
    //调用Typeid
    if( !empty($topid) )
    {
        $topQuery = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `dede_arctype` WHERE reid='$topid' And ishidden1 order by sortrank asc";
    }
  $dsql->Execute('t', $topQuery);
  while($row = $dsql->GetArray('t'))
  {
      $row['typelink'] = GetOneTypeUrlA($row);
      //处理同级栏目中,当前栏目的样式
                if( $row['id']==$typeid  && $currentstyle!='' )
                {
                    $linkOkstr = $currentstyle;
                    $linkOkstr = str_replace("~rel~",$row['rel'],$linkOkstr);
                    $linkOkstr = str_replace("~id~",$row['id'],$linkOkstr);
                    $linkOkstr = str_replace("~typelink~",$row['typelink'],$linkOkstr);
                    $linkOkstr = str_replace("~typename~",$row['typename'],$linkOkstr);
                    $revalue .= $linkOkstr;
                }
                else
                {
                  $revalue .= "    
{$row['typename']}\n"; } randomartlistSon($row['id'],$typeid,$currentstyle, $revalue); } if($cacheid !='') { WriteCacheBlock($cacheid, $revalue); } return $revalue; } function randomartlistSon($id,$typeid,$currentstyle,&$revalue) { global $dsql; $query = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `dede_arctype` WHERE reid='{$id}' And ishidden1 order by sortrank asc"; $dsql->Execute($id, $query); $thisv = ''; while($row = $dsql->GetArray($id)) { $row['typelink'] = GetOneTypeUrlA($row); //处理同级栏目中,当前栏目的样式 if( $row['id']==$typeid && $currentstyle!='' ) { $linkOkstr = $currentstyle; $linkOkstr = str_replace("~rel~",$row['rel'],$linkOkstr); $linkOkstr = str_replace("~id~",$row['id'],$linkOkstr); $linkOkstr = str_replace("~typelink~",$row['typelink'],$linkOkstr); $linkOkstr = str_replace("~typename~",$row['typename'],$linkOkstr); $thisv .= $linkOkstr; } else { $thisv .= " {$row['typename']}\n"; } randomartlistSon($row['id'],$typeid,$currentstyle, $thisv); } if($thisv!='') $revalue .= "
\n"; }

2、调用方式:

     
          
              {dede:randomartlist topid='12' currentstyle="~typename~"}
                 {dede:field name='typename'/}
              {/dede:randomartlist}
            
      

3、css方式:

      .alist{}
      /*第一层修饰*/
     .alist ul {}
     .alist ul li {}
     .alist ul li a{}
     .alist ul li a:hover,.alist ul li .thisclass{}
      /*第二层修饰*/
     .alist ul li ul{}
     .alist ul li ul li{}
     .alist ul li ul li a{}
     .alist ul li ul li a:hover,.alist ul li ul li  .thisclass{}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持yii666。文章来源地址https://www.toymoban.com/news/detail-432974.html

到了这里,关于详解织梦dedecms5.7 无限级多级栏目菜单调用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 织梦dedecms获取当前栏目路径及栏目名称的方法

    标签如下: 当前: 复制代码 代码如下: {dede:type} [field:typename/] {/dede:type} 因为{dede:field  name=\\\'arcurl\\\'/} 这个获取当前页面路径的标签只能在内容页使用,栏目页没有效果的。所以在栏目页想获取当前栏目的路径及名称的话,就要用上面这个标签。 而获取网站所有栏目名称及路径

    2023年04月18日
    浏览(14)
  • dedecms织梦让likearticle的mytypeid支持多个栏目和子栏目

    在使用dede:likearticle时,如果你想获取多个指定栏目下的相关文章,而刚好这个多个栏目下还有子栏目时,官方的程序不能满足你的需求,你需要改一下 打开 includetagliblikearticle.lib.php 找到 在它下面加入 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多

    2024年02月02日
    浏览(8)
  • 织梦DedeCMS 分表实现一个栏目对应一个表(图)

    一直在考虑做个什么网站项目,思考了很久很久,终于想到了一个idea,首先确定网站+论坛的形式,论坛选择pw,那网站选择什么呢? 以前一直是ecms(帝国)的粉丝,虽然一直用ecms,很赞它的一些内核设计,特别是多表储存,但唯一可惜的可能就是WC分不开身吧,网站的美工和人

    2024年02月04日
    浏览(9)
  • 织梦dedecms后台栏目怎么显示没有审核的文档数量

    在织梦的后台当中如果是没有审核的文章有很多,每次审核都要打开待审核文档,如果内容有很多,就很麻烦。 修改的方法: 打开/include/typeunit.class.admin.php文件 找到: function ListAllType 在上面加上下面的代码: 将: $this-GetTotalArc($id). 替换为: $this-GetTotalArc($id).$this-GetTotalA

    2024年02月03日
    浏览(38)
  • 详解DEDECMS织梦模板随机调用文章数据方法汇总教程

    有时我们为了网站优化都会对网站最后一些文章停止随机读取显现,这样能够进步网站对搜索引擎的体验,下面我们就来剖析总结一下dedecms随机调用文章数据办法. 方法一 ,直接利用artlist中的orderyb=rand 即可实例,代码如下: 代码如下: [field:title/]{/dede:arclist} 方法二 ,利用自定做法

    2024年02月02日
    浏览(7)
  • dedecms织梦模板栏目列表中添加统计文档数量的标签

    dedecms在栏目列表中添加统计文档数量调用标签,实现的方法还是非常简单的,只需要做一些简单的修改即可实现我们所需要的功能。 方法如下: 打开include/extend.func.php文件,在最后一行?的上面添加以下内容: 下面是我添加的示例代码,供大家参考! 针对arclist与list模板代码

    2024年02月02日
    浏览(11)
  • dedecms织梦php7+删除不了后台栏目的解决方法

    明明提示删除成功了,可是栏目还在后台栏目管理里,那是因为你的web环境PHP版本太高,例如PHP7的,织梦最新版本20180109还不能完全兼容PHP7,要么降低你的PHP版本为PHP5,要么修改一下这个文件。 PHP7+高版本环境下,织梦dedecms删除网站栏目失败。主要原因是语句书写不严谨,

    2024年02月03日
    浏览(11)
  • 织梦dedecms在搜索结果页按栏目分类显示搜索数据

    搜索结果示范 1、搜索框代码里使用name=\\\"q\\\"作为搜索框属性,例如  2、打开 /include/taglib/arclist.lib.php 找到,大概在188行 $innertext = trim($innertext); 在它下面加入 preg_match(\\\"/~([A-Za-z0-9_]+)~/s\\\", $keyword, $conditions); if(isset($_REQUEST[\\\'q\\\']) $keyword = \\\'~q~\\\') { preg_match(\\\"/~([A-Za-z0-9_]+)~/s\\\", $keyword, $cond

    2024年02月03日
    浏览(10)
  • 详解织梦模板DEDECMS搜索结果调用自定义字段的方法

    在搜索页调用自定义字段,使其可有让用户搜索这个自定义字段,找了好多文章和教程,却发现dedecms的标签底层模板字段不包括这个字段呢?这就大大限制了灵活性,但也不可能让所有字段都允许调用的,那样就会大大降低系统效率,所以今天分享的是一个比较完美解决这个

    2024年02月02日
    浏览(8)
  • 详解织梦模板DEDECMS对discuz论坛的一些常用调用代码

    dede调用DZ论坛帖子及特定板块帖子的调用方法 论坛最新主题: 调特定板块的主题: 显示精华帖: 论坛之星/活跃会员: [field:username/] 贴子:[field:posts/] 加入:[field:regdate function=\\\"GetDateMK(@me)\\\"/] {/dede:loop} /bbs/space.php?uid=[field:uid /] 个人信息地址 /bbs/uc_server/avatar.php?uid=[field:uid /

    2024年02月02日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包