详解织梦dedecms5.7 无限级多级栏目菜单调用方法
时间:2019-12-26来源:系统城作者:电脑系统城
以前在用到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 ishidden<>1 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 .= " <li><a href='{$row['typelink']}'>{$row['typename']}</a></li>\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 ishidden<>1 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 .= " <li><a href='{$row['typelink']}'>{$row['typename']}</a></li>\n";
- }
-
- randomartlistSon($row['id'],$typeid,$currentstyle, $thisv);
- }
- if($thisv!='') $revalue .= " <ul>\n$thisv </ul>\n";
- }
2、调用方式:
- <div class="alist">
- <ul>
- {dede:randomartlist topid='12' currentstyle="<li><a href='~typelink~' class='thisclass'>~typename~</a></li>"}
- <li><a href="{dede:field name='typeurl'/}" title="{dede:field name='typename'/}">{dede:field name='typename'/}</a></li>
- {/dede:randomartlist}
- </ul>
- </div>
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{}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关信息
-
wordpress如何更改主题首页模板
wordpress 首页模板修改步骤:登录 wordpress 仪表盘。转至“外观”>“主题编辑器”。找到并备份“index.php”文件。更新首页模板元素,包括标题、内容、侧边栏和页脚。保存更改并预览。...
2024-07-04
-
如何修改wordpress主题框架排版
通过修改 cascading style sheets (css) 文件,可以有效修改 wordpress 主题框架的排版。步骤包括:识别需要更改的元素及其相应的 css 类或 id。打开 theme 的 css 文件并编辑...
2024-07-04