1. 栏目列表 ms:channel

1.1. 适用模版

首页模版、列表模版、内容模版、自定义页面模版

[!tip]主页面模版使用:如果不设置typeid会取出所有顶级(第一级)栏目; 列表模版使用:typid参数值为当前访问的栏目ID 内容模版使用: typeid为当前文章的所属栏目id

1.2. 格式

{ms:channel 参数1=值1 参数2=值2}
${field.*}
{/ms:channel}

[!tip]栏目的显示的排序可以通过排序字段设置

1.2.1. 嵌套格式

{ms:channel type="nav" }
    <!--第一级-->
    +${field.typetitle} <br/>
    {ms:channel typeid=field.id}
        <!--第二级-->
        +++${field.typetitle}<br/>
        {ms:channel typeid=field.id}
        <!--第三级-->
            ++++++${field.typetitle}<br/>
        {/ms:channel}
    {/ms:channel}
{/ms:channel}

1.3. 参数

参数名称 类型 必须 示例值 默认值 描述
type 字符串 son
top
level
self
path
parent
nav
son nav:该标签用于首页导航取第一级栏目
son:取下级栏目;
top:获取栏目的平级的顶级栏目,typeid参数不为空才有效;
level:取同级栏目,顶级栏目无效;
self: 取当前指定typeid本身;
path:取当前栏目的路径,通常用于详情页,显示隶属栏目位置,例如:新闻中心 > 行业新闻;
parent:上一级栏目;
typeid 整型 >0 所有父级栏目 typeid有值时,取所指栏目的子级
typeids 字符串 1,2,3 typeids参数值,多个以逗号隔开,当typeids有值时,type参数无效,只取指定栏目id数据(该参数只在5.4.2及以上版本支持)
size 整型 >0 所有栏目 返回既定条件下的栏目个数,不使用则默认返回全部(5.3.1及以上版本支持)
flag 字符串 在自定义字典中定义好对应的值,具体属性值请在栏目属性进行查看,使用方式参考文章列表的flag使用
noflag 字符串 参考文章列表的noflag
orderby 字符串 date 更新时间
sort 排序
id 栏目排序,sort排序需要在自定义顺序设置才能看到效果
order 字符串 升序 desc:按照倒序排列,asc:按照正序排列

[!tip] order参数必须要与orderby一起使用才有效 属性类型为字符串,使用需要使用引号 例如 type="son" order="desc"

1.4. 输出字段

[!tip] 在栏目绑定的列表模板,如开源的news-list模板;${field.栏目相关字段}即可输出当前栏目对应数据;不需要被{ms:channel}标签包裹

字段名称 描述
${field.index} 序号,根据显示条数显示的序号1 2 …..10
${field.type} 栏目类型,1:列表 2:单篇 3:链接与栏目链接一起使用
${field.typetitle} 栏目名称,与栏目链接一起使用
${field.typeshorttitle} 栏目副标题
${field.typepath} 栏目拼音路径
${field.typelink} 栏目链接:{ms:global.html/}${field.typelink};注意栏目属性为外连接标签显示为外连接的内容与${field.typeurl}一致
${field.typekeyword} 栏目关键字
${field.typedescrip} 栏目描述
${field.id} 栏目id,单篇文章情况为文章id,需使用${field.typeid}获取栏目id
{@ms:file field.typelitpic/} 栏目banner图:{@ms:file field.typelitpic/}
{@ms:file field.typeico/} 栏目小图:{@ms:file field.typeico/}
${field.typeurl} 栏目自定义链接,需要配合if条件来决定跳转自定义链接
${field.flag} 栏目属性
${field.childsize} 子分类数量
${field.parentid} 父级编号
${field.parentids} 父级编号集合
${field.typeleaf} 子节点标识,返回 1 表示该栏目下没有任何子栏目,返回 0 则表示是有子栏目

[!tip]当栏目为单篇时,需要选择静态化生成栏目,页面才会生成。且单篇栏目下,需要发布文章,才可用标签获取

2. 范例

下面列举一些常用的使用场景

2.1. 顶级栏目导航


{ms:channel type='nav'}
<a href="{ms:global.html/}${field.typelink}">${field.typetitle}</a>
{/ms:channel}

2.2. 栏目链接为外链接

{ms:channel type='nav'}
    <a href="<#if field.type==3>${field.typeurl}<#else>{ms:global.html/}${field.typelink}</#if>">
        ${field.typetitle}
    </a>
{/ms:channel}

field.type==3 为外链接类型

2.3. 当前位置

主要用在列表模版、内容模版上,可以实现例如:当前位置:首页 > 新闻中心 > 行业新闻 的效果

当前位置: <a href="{ms:global.html/}/index.html">首页 </a>
{ms:channel type="path"}

   <a href="">> ${field.typetitle}</a>
{/ms:channel}

2.4. channel中使用include

主要用于父栏目和子栏目绑定不是相同模板的情况,在父栏目页面include子栏目的模板,方便维护和简化模板;

<!-- 父栏目列表模板 -->
<#assign curTypeId=field.id>
{ms:channel typeid="son1的id" type="self"}
    <#include "son1.htm" />
{/ms:channel}
...

<!-- 子栏目son1的列表模板 -->
include获取传参:${curTypeId}
{ms:arclist size=10 ispaging=true }
    ${field.title}==${field.typetitle}==${field.typeid}  <br>
{/ms:arclist}
<#if page.total?number gt 0>
    <ul>
    <li><a href="{ms:global.html/}{ms:page.index/}">首页</a></li>
    <li><a href="{ms:global.html/}{ms:page.pre/}">上一页</a></li>
    <li><a href="{ms:global.html/}{ms:page.next/}">下一页</a></li>
    <li><a href="{ms:global.html/}{ms:page.last/}">末页</a></li>
    <li>当前页/总页数<span>{ms:page.cur/}/{ms:page.total/}</span></li>
    <li>共有:<span>{ms:page.rcount/}</span>篇文章</li>
    </ul>
</#if>

[!tip] 注意: 此种用法,父栏目不支持分页;分页子栏目在父栏目只显示第一页的数据,在自身栏目列表页分页正常; 可在父栏目定义变量(如curTypeId)传递给include的子栏目页面,定义的变量值在父栏目页面的子栏目模板中可以获取到;在子栏目自身的列表页面无法获取;如访问parent.html,能输出curTypeId的值;访问son.html,子栏目输出的curTypeId为空

2.5. 当前栏目的子栏目

{ms:channel type="son" }

<a href="{ms:global.html/}${field.typelink}">${field.typetitle}</a>》

{/ms:channel}

2.6. 默认显示第一个子栏目的列表页

可以将父栏目设置为链接,在自定义链接中填写具体的子栏目对应静态文件链接 样例代码片段,具体可以参考默认皮肤。

<a href="<#if field.type == 3>{ms:global.html/}${field.typeurl}<#else>{ms:global.html/}${field.typelink}</#if>">${field.typetitle}</a>

2.7. 栏目选中效果

<!-- 定义typeid变量 field为当前栏目对象-->
<#assign typeid=field.typeid>
<#assign ids=field.parentids>
{ms:channel type="nav" }
<!-- if标签中直接使用typeid-->
<#if field.typeid == typeid || (ids?has_content && ids?index_of('${field.typeid}') gt -1)>
<a href="${field.typelink}" class="选中样式">${field.typetitle}</a>
<#else>
<a href="{ms:global.html/}${field.typelink}">${field.typetitle}</a>
</#if>
{/ms:channel}

2.8. 每个栏目不同banner的效果

栏目上传不同的缩略图就可以实现不同顶部banner图的效果

[!tip]如果存在子栏目需要显示顶级栏目的图片,可以通过 if 逻辑来实现

[!tip]注意#assign定义变量 filed.typeid 值为当前预览页面的栏目id(全局栏目id),而 ms:channel循环里面的 filed.typeid 只是当前循环的栏目id(局部栏目id)

2.9. 常用组合代码片段

2.9.1. 当前父亲+当前子栏目+选择效果

下面是 default\news-list.htm 默认模版里面的代码片段


<!--通过type='parent'获取当前页面父栏目-->
{ms:channel type='parent'}
<span class="title"> ${field.typetitle}</span>
{/ms:channel}
<!-- 定义typeid变量 field为当前栏目对象-->
<#assign typetitle=field.typetitle>
<!-- 判断当前是否已经是子节点-->
<#if field.typeleaf == 1>
{ms:channel type='level'}
<a href="{ms:global.html/}${field.typelink}"
class="<#if typetitle==field.typetitle>sub-title-sel<#else>sub-title</#if>"><!-- 选中效果 -->

${field.typetitle}
</a>
{/ms:channel}
<#else>
{ms:channel type='son'}
<a href="{ms:global.html/}${field.typelink}"
class="<#if typetitle==field.typetitle>sub-title-sel<#else>sub-title</#if>"><!-- 选中效果 -->
${field.typetitle}
</a>
{/ms:channel}
</#if>

[!tip]field.typeleaf 子节点标识,表示该栏目下没有子栏目。就获取平级栏目,相反就获取子栏目

2.9.2. 自定义栏目跳转链接


{ms:channel  }
<!-- if标签中直接使用typeid-->
<#if field.typeurl?has_content>
<a href="{ms:global.html/}${field.typeurl}">${field.typetitle}</a>
<#else>
<a href="{ms:global.html/}${field.typelink}">${field.typetitle}</a>
</#if>
{/ms:channel}

2.9.3. 指定获取parentids中的某个id

<#assign typeid>
<!--指定某个栏目-->
{ms:channel typeid=栏目id type='self'}
    <#list field.parentids.split(",") as item>
<!--取parentids中的第二个parentid-->
        <#if item?index = 1>
            ${item}
        </#if>
    </#list>
{/ms:channel}
</#assign>
${typeid}
Copyright © mingsoft.net 2021 all right reserved,powered by Gitbook该文件修订时间: 2024-09-28 15:55:39

results matching ""

    No results matching ""

    results matching ""

      No results matching ""