dedecms三级目录

dedeCMS织梦系统的目录展开,都只能到第一级和第二级栏目,但其实调用到第三级目录是很常见的。比如你在一个大的主题目录下,想要显示某个子栏目的分栏,这其实就已经是第三级目录了。

如下图所示:

 
image.png

而这个对织梦系统来讲并不支持,如下所示:

{dede:channelArtlist typeid ='1'}
<h3>
    <a href="{dede:field name='typeurl'/}" title="{dede:field name='typename'/}"> <!-- 一级栏目名称 --> {dede:field name='typename'/} </a> </h3> <ul> {dede:channel type='son' noself='yes'} <li> <a href="[field:typelink/]" title="[field:typename/]"> <!-- 二级栏目名称 --> [field:typename/] </a> <!-- 无法做arclist第三级栏目展开 --> </li> {/dede:channel} </ul> {/dede:channelArtlist} 

修改织梦系统文件

为了能够让织梦系统具备第三级目录的展开需要修改系dede的系统文件\include\taglib\channel.lib.php注意,在修改前请一定记得先备份一次原文件。因为一旦修改错误,会导致织梦系统无法正常运行

找到( v5.7是122行左右)下面这一行代码:

if ($col>1) $likeType .= "<dd>\r\n"; 

在其前面添加如下代码:

$typeid = $row['id']; if ( class_exists('PartView') ) { $pv = new PartView($typeid); $text = $likeType; $text = str_replace(array('{field', '/}'), array('[field', '/]'), $text); $pv->SetTemplet($text, 'string'); $artlist = $pv->GetResult(); $likeType = $artlist; } 

最后变成:

// Appended part
$typeid = $row['id']; if ( class_exists('PartView') ) { $pv = new PartView($typeid); $text = $likeType; $text = str_replace(array('{field', '/}'), array('[field', '/]'), $text); $pv->SetTemplet($text, 'string'); $artlist = $pv->GetResult(); $likeType = $artlist; } // Original part if ($col>1) $likeType .= "<dd>\r\n"; 

如何在模板中使用

再来就是如何在模板文件中使用了。承接上面的例子,可以扩展为:

{dede:channelArtlist typeid ='1'}
<h3>
    <a href="{dede:field name='typeurl'/}" title="{dede:field name='typename'/}"> <!-- 一级栏目名称 --> {dede:field name='typename'/} </a> </h3> <ul> {dede:channel type='son' noself='yes'} <li> <a href="[field:typelink/]" title="[field:typename/]"> <!-- 二级栏目名称 --> [field:typename/] </a> <ul> {dede:arclist titlelen='100' orderby ='pubdate' row='8'} <li> <a href="{field:arcurl /}" title=" {field:title/}" > <!-- 第三级栏目名称 --> {field:title/} </a> </li> {/dede:arclist} </ul> </li> {/dede:channel} </ul> {/dede:channelArtlist} 

这就成功解决了第三级目录展开的情况。

 
 

猜你喜欢

转载自www.cnblogs.com/shixiuxian/p/12896348.html