解决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}

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值