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

而这个对织梦系统来讲并不支持,如下所示:
{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
。注意,在修改前请一定记得先备份一次原文件。因为一旦修改错误,会导致织梦系统无法正常运行。
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}
这就成功解决了第三级目录展开的情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。