如何在CHANNELARTLIST的三级栏目中调用并高亮顶级栏目?

在CHANNELARTLIST模板中,可以通过判断当前栏目ID与顶级栏目ID是否相同,来实现三级栏目调用顶级栏目高亮的效果。具体实现方法如下:,,1. 获取当前栏目的顶级栏目ID。,2. 判断当前栏目ID与顶级栏目ID是否相同。,3. 如果相同,则给当前栏目添加高亮样式。,,以下是实现这个功能的示例代码:,,“php,{dede:channel type='top'},[field:name/], {dede:list typeid='[field:id/]'},[field:name/], {/dede:list},{/dede:channel},`,,在这个示例代码中,我们使用了GetTopId`函数来获取当前栏目的顶级栏目ID,并通过判断ID是否相同来实现高亮效果。

在织梦CMS中,实现CHANNELARTLIST三级栏目调用顶级栏目高亮显示的方法主要依赖于对模板代码的调整和PHP运行代码的使用,以下是详细的步骤和方法:

方法一:使用typeid判断

1、打开include/taglib/channelartlist.lib.php文件:找到以下代码行:

“`php

$tpsql = " reid=’$typeid’ AND ispart<>2 AND ishidden<>1 ";

“`

修改为:

“`php

if($type==’son’) {

$typeid = ( !empty($refObj>TypeLink>TypeInfos[‘id’]) ? GetTopid($refObj>TypeLink>TypeInfos[‘id’]) : 0 );

$tpsql = " reid=’$typeid’ AND ishidden<>1 ";

} else {

$tpsql = " reid=’$typeid’ AND ispart<>2 AND ishidden<>1 ";

}

“`

2、打开include/taglib/channel.lib.php文件:找到以下代码行:

“`php

if($type==’son’ && $reid!=0 && $totalRow==0

“`

修改为:

“`php

if($type==’son’ && $reid!=0 && $totalRow==0 && $noself==”)

“`

3、后台设置:在后台系统其它选项中,确保模板引擎禁用标签去掉PHP。

4、调用代码:在模板文件中添加以下代码:

“`html

<ul>

{dede:field name=’typename’ runphp=’yes’}

if(@me == "织梦模板") @me = " class=’current’";else @me = "";

{/dede:field}

<li><a href='[field:typeurl/]’>[field:typename/]</a></li>

<ul>

{dede:channel type=’son’ noself=yes}

<li [field:id runphp=yes](@me==$GLOBALS[‘thisid’]? @me=’ class="current2"’:@me=”;[/field:id]><a href='[field:typelink /]’ title='[field:typename/]’>[field:typename/]</a></li>

{/dede:channel}

</ul>

如何在CHANNELARTLIST的三级栏目中调用并高亮顶级栏目?

{/dede:channelartlist}

</ul>

“`

方法二:使用栏目名称判断

1、在前台树状代码中添加判断逻辑:在dl标签中加入判断条件,如果typename等于本栏目名字,则添加class="current",否则为空:

“`html

<dl{dede:field name=’typename’ runphp=’yes’}if(@me == "织梦模板") @me = " class=’current’";else @me = "";{/dede:field}>

<dt>织梦模板</dt>

<dd>

<ul>

{dede:channel type=’son’ typeid=’2′}

<li>&bull;<a href='[field:typeurl/]’>[field:typename/]</a></li>

{/dede:channel}

</ul>

</dd>

</dl>

“`

2、示例代码

“`html

<dl{dede:field name=’typename’ runphp=’yes’}if(@me == "织梦源码") @me = " class=’current’";else @me = "";{/dede:field}>

<dt>织梦源码</dt>

<dd>

<ul>

{dede:channel type=’son’ typeid=’39’}

<li>&bull;<a href='[field:typeurl/]’>[field:typename/]</a></li>

{/dede:channel}

</ul>

</dd>

</dl>

“`

相关问答FAQs

1、问:为什么栏目名称不能重复?

:因为栏目名称重复会导致无法准确判断哪个是当前顶级栏目,从而影响高亮显示的效果,使用typeid判断可以避免这个问题,因为每个栏目的ID是唯一的。

2、问:如何确保栏目高亮显示效果正确?

:确保栏目高亮显示效果正确的方法是在模板文件中正确添加判断逻辑,并确保PHP代码在include/taglib/channelartlist.lib.php和include/taglib/channel.lib.php文件中正确修改,需要在后台设置中禁用PHP标签。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1111168.html

(0)
未希的头像未希新媒体运营
上一篇 2024-09-30 20:51
下一篇 2024-09-30 20:52

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

免费注册
电话联系

400-880-8834

产品咨询
产品咨询
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入