您现在的位置是:首页 > cms教程 > DedeCMS教程DedeCMS教程
织梦dedecms5.7无限级多级栏目菜单调用方法
访烟2024-08-22DedeCMS教程已有人查阅
导读以前在用到5.7无限级栏目列表菜单时下载了网上的资料都未成功,因此我参考网上及dedecms本身的channel.lib.php及cattree.lib.php制作了调用标签。
以前在用到5.7无限级栏目列表菜单时下载了网上的资料都未成功,因此我参考网上及dedecms本身的channel.lib.php及cattree.lib.php制作了调用标签。
1、在include\taglib建立randomartlist.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{}
本文标签:
很赞哦! ()
相关教程
图文教程
dede5.6图片集水印无效的修复方法
打开dede\swfupload.php,找到 第100行把这句话前面的 // 去掉,即可!
织梦模板标签语法介绍
织梦的模板标签类似于XML格式,所有的模板都含有定界符,默认情况下是{dede:*}和{/dede:*},“*”代表模板标记名称。
在dedecms列表页中怎样得到文章总数的方法
在建造DedeCMS模板时,尤其在列表页我们常常想在页面内插手文章总数的设法。可是 DedeCMS 不像 WordPress 那样为我们提供响应的官方标签。
织梦添加迅雷专用链的方法
用织梦做的软件站如何添加一个迅雷专用链接呢?本文将详细说明其操作方法。一.用管理员账号登陆织梦模板5.5后台管理系统;
相关源码
-
(自适应响应式)蓝色勘察设计院机构单位商会协会pbootcms模板下载本模板基于PbootCMS系统开发,为勘察设计院所、工程咨询单位设计,特别适合展示设计成果、技术服务和项目案例。采用响应式技术,确保设计图纸和方案以及文案在不同设备上都能清晰展示。查看源码 -
(PC+WAP)绿色市政园林建筑设计绿化营销型pbootcms网站模板本模板基于PbootCMS系统开发,为园林绿化、景观设计类企业设计,特别适合市政园林、景观工程、绿化养护等企业使用。采用双端适配技术查看源码 -
(自适应)营销型健身器材产品设备类pbootcms模板网站为健身器材企业打造的营销型网站模板,基于PbootCMS开源内核开发。采用HTML5响应式架构,PC与移动端数据实时同步,适配多终端展示场景。查看源码 -
(自适应)WordPress主题SEO自媒体博客资讯模板RabbitV2.0Rabbit v2.0主题专注于网站搜索引擎优化需求,为博客、自媒体及资讯类网站提供专业的SEO技术解决方案。该主题从架构设计到功能实现均围绕搜索引擎优化理念展开。查看源码 -
(PC+WAP)智能机器人人工智能物联网自动化设备源码下载本模板基于PbootCMS内核开发,为智能机器人及传感器科技企业精心设计。采用现代化设计风格,突出科技感与专业性,多方位展示企业技术实力与产品优势。查看源码 -
(PC+WAP)绿色资源回收新能源环保设备pbootcms源码下载基于PbootCMS系统深度开发的环保行业模板,特别适配资源回收设备、新能源技术、环境治理装备等企业的线上展示需求。集成产品库、解决方案、环保案例等专业模块,助力企业高效传递绿色价值。查看源码
| 分享笔记 (共有 篇笔记) |
