如何在织梦系统中调用四级栏目?
- 行业动态
- 2024-10-08
- 2732
织梦调用四级栏目可以使用标签{dede:channel type=’top’}来获取顶级栏目,然后通过嵌套使用{dede:channel type=’son’}来获取子栏目。
在织梦中调用四级栏目,首先需要修改文件:includetaglib目录下的channel.lib.php,以下是详细的步骤和代码示例:
1、修改channel.lib.php 文件:
打开channel.lib.php 文件,并将以下代码复制替换到该文件中:
<?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,sitesitepath,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 .= "<dl>r "; for($j=0;$j<$col;$j++) { if($col>1) $likeType .= "<dd>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($row); $linkOkstr = str_replace("~rel~",$row['rel'],$linkOkstr); $linkOkstr = str_replace("~id~",$row['id'],$linkOkstr); $linkOkstr = str_replace("~typelink~",$row['typelink'],$linkOkstr); } } } } } return $likeType; }
2、调用四级栏目:
使用{dede:channel row='5' type='self'} 标签可以调用同级栏目,而不需要指定 ID。
{dede:channel row='5' type='self'} <li><a href="[field:typelink/]">[field:typename/]</a></li> {/dede:channel}
3、调用文章列表:
使用{dede:arclist row='条数' typeid='all' orderby='pubdate'} 标签可以调用文章列表。
{dede:arclist row='8' typeid='top' orderby='pubdate'} [field:title/] {/dede:arclist}
相关问答FAQs
1、问:如何确保修改后的channel.lib.php 文件生效?
答:确保修改后的channel.lib.php 文件生效,你需要刷新织梦后台缓存,可以通过后台管理界面找到“系统设置” > “SQL命令运行工具”,然后执行一条简单的SQL语句,如SELECT 1,这样就能清除缓存并使新修改的文件生效。
2、问:如何在模板中调用特定类型的栏目及其子栏目?
答:在模板中调用特定类型的栏目及其子栏目,可以使用{dede:channel type='son' typeid='父栏目ID'} 标签,要调用父栏目ID为1的所有子栏目,可以使用以下代码:
“`html
{dede:channel type=’son’ typeid=’1′}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
“`
步骤 | 代码示例 |
1. 获取顶级栏目ID | $cid = 1; // 假设顶级栏目ID为1 |
2. 获取二级栏目列表 | $child_list = GetChildList($cid); |
3. 循环二级栏目,获取三级栏目ID | foreach ($child_list as $v) { $sec_cid = $v['id']; ... } |
4. 获取三级栏目列表 | $sec_list = GetChildList($sec_cid); |
5. 循环三级栏目,获取四级栏目ID | foreach ($sec_list as $v) { $third_cid = $v['id']; ... } |
6. 获取四级栏目信息 | $cat_info = GetCategory($third_cid); |
在代码示例中,GetChildList() 函数用于获取指定栏目的子栏目列表,GetCategory() 函数用于获取指定栏目的详细信息。
代码仅为示例,实际使用时请根据实际情况进行调整。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/118967.html