织梦CMS如何判断和获取当前栏目?
在织梦CMS模板开发中,获取"当前栏目"是一个重要需求。无论是高亮导航、显示当前位置、还是调用当前栏目的相关信息,都需要准确判断用户当前所在的栏目。
一、当前栏目高亮(currentstyle)
织梦CMS标签提供了currentstyle参数来实现当前栏目高亮:
{dede:channel type='top' currentstyle="<li class='active'><a href='~typelink~'>~typename~</a></li>"}
<li><a href='[field:typelink/]'>[field:typename/]</a></li>
{/dede:channel}
系统会自动判断用户当前所在的栏目,并将currentstyle参数中定义的格式应用到该栏目上。~typelink~和~typename~会自动替换为实际值。
二、在列表页获取当前栏目信息
{dede:field name='typename'/} —— 当前栏目名称
{dede:field name='id'/} —— 当前栏目ID
{dede:field name='typeurl'/} —— 当前栏目URL
{dede:field name='seotitle'/} —— 当前栏目SEO标题
{dede:field name='keywords'/} —— 当前栏目关键词
{dede:field name='description'/} —— 当前栏目描述
{dede:field name='position'/} —— 当前栏目面包屑导航
三、在内容页获取当前文章所属栏目
{dede:field name='typeid'/} —— 所属栏目ID
{dede:field name='typename'/} —— 所属栏目名称
{dede:field name='typeurl'/} —— 所属栏目URL
四、通过PHP判断当前栏目
{dede:php}
$currentId=$refObj->TypeLink->TypeInfos['id'];
if($currentId==5){
echo '当前为指定栏目';
}
{/dede:php}
五、当前栏目的子栏目调用
{dede:channel type='son' row='10'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
在列表模板中使用type='son'(不指定typeid),系统会自动获取当前栏目的子栏目。
六、当前栏目的上级栏目
{dede:field name='position'/}
面包屑导航自动包含了从首页到当前栏目的完整层级路径。
七、判断是否有子栏目
{dede:channel type='son' row='1'}
[field:typename/] 有子栏目
{/dede:channel}
如果当前栏目有子栏目,上述代码会输出第一个子栏目的名称,借此可以判断子栏目是否存在。
技巧:在侧边栏中,可以先输出当前栏目的上级栏目,再列出该上级栏目下的所有子栏目,实现侧边导航的展开效果。