1.1. 文章列表 ms:arclist

读取文章列表数据

1.2. 适用模版

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

[!tip]主页面模版使用:如果不设置 typeid 会取出所有的栏目下的数据,推荐增加 typeid 值;
列表模版使用: 可以不设置 typeid 参数,默认为当前访问的栏目 ID,分页列表必须使用ispaging属性,注意:每个列表模版只能有一个使用了ispaging属性的arclist标签,且 ispaging 获取的分页数据是当前栏目的数据; 内容模版使用: 可以不设置 typeid,默认为当前文章的所属栏目 id;

1.3. 格式

{ms:arclist [参数1=值1 参数2=值2]} ${field.*} {/ms:arclist}

[!tip]可以嵌套在 channel 里面来实现栏目动态获取文章列表

1.4. 嵌套格式

多级栏目文章嵌套格式

{ms:channel type="nav"}
<!--顶级栏目-->
+${field.typetitle} <br />

{ms:channel}
<!--二级栏目-->

++${field.typetitle} <br />

{ms:arclist typeid=field.id}<!--二级栏目下的文章-->
${field.title}<br />
{/ms:arclist} {/ms:channel} {/ms:channel}

[!tip] 在内容模版页、列表模版页使用栏目嵌套 ms:arclist标签时, 必须增加typeid=field.id参数,在主页、自定义页面 可以不使用

1.5. 参数

名称 类型 必须 示列值 默认值 描述
typeid 整型 >0 栏目 ID,在列表模板和内容模板会默认获取当前所属栏目 ID,可以不用设置typeid参数,在内容详情页不设置可以实现类似相关文章的效果
typeids 字符串 1,2,3 栏目 IDs,以逗号分隔,返回多个栏目下的文章,如果设置了typeids参数,typeid参数将不会生效;(5.4.2 及以上版本)
size 整型 >0 20 返回文档列表总数,默认为 20 条,也可以配合分页使用;特殊用法参考 2.11
topflag 字符串 c,f,h,p, 指定某类属性的文章固定优先获取,即文章置顶效果(5.3.3 及以上版本)
flag 字符串 c,f,h,p, 指定显示某个属性的文章数据,幻灯 f,图片 p,推荐 c,头条 h,跳转 j;请按照示例值顺序设置,例如:flag=c,f;注意具体属性值请在文章属性查看
noflag 字符串 c,f,h,p, noflag=c,显示文章属性除 c 之外的所有文章;请按照示例值顺序设置,例如:noflag=c,f;c,p
orderby 字符串 date content_datetime 根据时间排序:date,根据更新时间排序:updatedate,根据文章自定义顺序排序:sort,根据文章点击数排序:hit(如果点击量增加了,需要重新生成排序才会变化),不填则显示默认顺序,支持多个参数值,以英文逗号分隔,例如:orderby='sort,date'(多个参数值,仅5.4.2及以上版本支持)
order 字符串 asc desc desc:按照倒序(降序)排列,asc:按照正序(升序)排列,必须与 orderby 一起使用,默认为创建时间;
ispaging 布尔型 true false 当文章列表出现分页标签时必须添加本属性,且只能使用一次。注意不要双引号,可以不设置 typeid 参数默认获取当前栏目数据
tableName 字符串 mdiy_model_mobile typeid必须指定对应栏目才有效,使用代码生成器导入的模型表名

[!tip]属性类型为字符串使用需要使用引号 flag="c,h" order="desc";
flag 可以通过后台自定义字典进行维护;
ispaging 只能列表模版下使用,使用 ispaging 之后 flag、noflag 不能使用,会导致分页不同步;
tablename 可以自定义模型决定,自定义模型创建流程:先在 代码生成器 拖出模型并下载模型代码 -> 打开系统后台自定义管理,进行自定义模型导入 -> 打开栏目管理,进行栏目绑定自定义模型 -> 打开文章管理,进行发布内容;
取自定义模型字段数据时,字段名是数据库字段名,严格区分大小写;

1.6. 输出字段

字段名称 描述
${field.index} 序号,根据显示条数显示的序号 1 2 …..10
${field.id} 文章编号
${field.title} 文章标题
${field.author} 文章作者
${field.source} 文章来源
${field.outlink} 文章外链接,必须以 http/http 开头,使用格式如:<a href="${field.outlink}"/>
${field.typetitle} 文章所属分类的名称
${field.typeshorttitle} 文章所属分类的副标题
${field.typeid} 文章所属分类的编号
${field.typelitpic} 文章所属分类的 banner 图
${field.typeico} 文章所属分类的小图
${field.typekeyword} 文章所属分类的关键字
${field.topid} 文章所属分类的顶级分类
${field.parentid} 文章所属分类的父栏目编号
${field.parentids} 文章所属分类的所有父栏目编号
${field.type} 文章所属分类的栏目类型,如列表栏目输出为 1,链接栏目输出为 3
${field.typelink} 文章分类链接,点击连接连接到当前分类的列表:{ms:global.html/}${field.typelink}
{@ms:file field.litpic/} 文章缩略图,上传文章的缩略图,调用缩略图地址:{@ms:file field.litpic/},支持上传多张图片
${field.link} 文章内容链接,点击显示文章具体的内容地址,一般配合文章标题使用:{ms:global.html/}${field.link}
${field.date?string("")} 根据用户指定的格式输出时间,${field.date?string("yyyy-MM-dd")}
${field.descrip} 文章摘要
${field.hit} 文章点击量
${field.flag} 文章 flag 属性
${field.keyword} 文章关键字
${field.tags} 文章标签,多个以","隔开;推荐文章标签字典的 label 和值一致
${field.css} 文章标题样式,常规用法为用来控制某篇文章标题的样式特殊展示;企业版本及政务版本支持。
${field.*} 其他自定义标签,使用代码生成器拖拽的字段名

[!tip] 不支持直接获取field.content,要在列表获取文章内容请参考列表页获取详情

field.title 长度的控制通过{@ms:len field.title 长度 /};

field.litpic缩略图必须要使用 {@ms:file field.litpic /} 来获取缩略图路径,多张缩略图的模板用法参考范例 2.4;

field.data 日期格式通过 ?string("yyyy-MM-dd hh:mm:ss") 格式化

自定义模型字段 通过 ${field.扩展模型字段名} 获取 html 属性中使用field.title后,""建议替换为title="${field.title?replace('\"','“')}"title="${field.title?replace('\"','')}";

orderby 不能使用在上下篇的文章列表,会导致上下篇和列表显示不一致;

列表页通过标签获取的文章点击数默认是不支持动态的,需要在列表页动态获取文章点击数,推荐列表页通过接口获取文章列表数据,接口查看 swagger 前端-内容模块接口-查询文章列表接口(企业版或政务版查看前端-文章接口)

2. 范例

2.1. 基础使用格式

获取 typeid=62 下面size=5 五篇 flag="c" 推荐的文章

{ms:arclist flag="c" size=5 typeid=62}
<img src="{@ms:file field.litpic/}" />
<a href="{ms:global.html/}${field.link}" target="_self">${field.title}</a>
{/ms:arclist}

在列表页,获取全部文章中文章属性为推荐的前 4 篇文章 默认按时间排序

...
<div class="tit">猜您喜欢</div>
  {ms:arclist size=4 flag='c' typeid=0}
    <a href='{ms:global.html/}${field.link}' target="_self">${field.title}</a>
  {/ms:arclist}
</div>
...

2.2. 列表第一条凸显显示

{ms:arclist size=10  typeid=62}
<!--第一条图片方式显示-->
<#if field.index == 1>
<img src="{@ms:file field.litpic/}"/>
<#else>
<a href='{ms:global.html/}${field.link}' target="_self">${field.title}</a>
</#if>
{/ms:arclist}

2.3. topflag 使用范例

[!tip] topflag 不影响分页

类似效果如微博热搜

{ms:arclist size=10 typeid=62 topflag='h' orderby='date'}
<img src="{@ms:file field.litpic/}" />
<a href="{ms:global.html/}${field.link}">${field.title}</a>
{/ms:arclist}

属性为 h 的文章会固定展示在列表顶部,多篇该属性文章之间会按照时间排序,其余文章在'置顶文章'之后按时间排序

{ms:arclist size=10 ispaging=true typeid=62 topflag='h,c' orderby='date'}
<img src="{@ms:file field.litpic/}" />
<a href="{ms:global.html/}${field.link}">${field.title}</a>
{/ms:arclist}

多置顶属性设置,优先置顶属性为 h 的文章(同属性按时间排序),再排属性为 c 的文章,其余文章在'置顶文章'之后按时间排序

2.4. 带自定模型基础使用格式

{ms:arclist typeid=70 tableName="自定义模型表名"} ${field.自定义模型表字段名称}
{/ms:arclist}

2.5. 获取当前文章的文章标签

{ms:arclist typeid=70}
    <#list field.tags?split(",") as cur_content_tag>
        <a href="/mcms/search?content_tag=${cur_content_tag}">${cur_content_tag} </a>
    </#list>
{/ms:arclist}

2.6. 多张缩略图获取方式

{ms:arclist typeid=70}

    获取第一张缩略图
    <img src="{@ms:file field.litpic/}"/>
    <a href='{ms:global.html/}${field.link}' target="_self">${field.title}</a>

    获取所有缩略图
    <#if field.litpic && field.litpic!=''>
        <#list field.litpic?eval as img>
        ${img.path}
        </#list>
        获取当前文章缩略图数量,必须在判断里使用
        ${field.litpic?eval?size}
    </#if>
    获取除指定位置外的所有缩略图
    <#if field.litpic && field.litpic!=''>
        <#list field.litpic?eval as img>
        <#if img?index!=0> 获取除第一张缩略图外的所有缩略图
          ${img.path}
        </#if>
        </#list>
    </#if>

    获取指定位置的缩略图
    <#if field.litpic && field.litpic!=''>
        ${field.litpic?eval[2].path}
    </#if>

    判断指定的缩略图是否存在,不存在就不生成这个img标签
    <#if field.litpic && field.litpic!='' && field.litpic?eval[5]?has_content>
        <img  title="" alt="" src="${field.litpic?eval[5].path}" />
    </#if>


{/ms:arclist}

[!tip] 多图情况下{@ms:file field.litpic/}默认只会取出第一张图片,取指定位置的缩略图需要指定准确的数组下标 ieval[i]; 在范例中缩略图的判空是必要的,否则模板解析会失败,类似于 java 的 NullPointerException

2.7. 如果没有上传缩略图就显示一张默认图片

{ms:arclist}
<#if field.litpic>
 <img src="{@ms:file field.litpic/}"/>
<#else>
 <img src="默认图片"/>
</#if>
{/ms:arclist}

[!tip] 部分老版本的旧数据使用 field.litpic!="[]" 去做缩略图判空。 新版本无旧数据则无需使用此方法。

2.8. 首页大幻灯

背景图幻灯可以通过创建一个 幻灯栏目 ,再创建对应的文章,文章只上传缩略图,如果还有其他文章信息,可以灵活使用其他字段填充,通过对应标签获取

<!-- 通过栏目管理幻灯图片 -->
{ms:arclist typeid="1666653706550321162"}
<li>
    <a href=javascript:;">
        <img src="{@ms:file field.litpic/}" width="100%" alt="MCMS"/>
    </a>
</li>
{/ms:arclist}
<!-- 通过文章属性管理幻灯图片 -->
{ms:arclist flag='f'}
<li>
    <a href=javascript:;">
        <img src="{@ms:file field.litpic/}" width="100%" alt="MCMS"/>
    </a>
</li>
{/ms:arclist}

[!tip] 注意:如果通过文章属性管理幻灯,需要在文章管理中设置属性为幻灯,否则无法获取到幻灯图片。如果还需要控制幻灯数量,需要设置size属性。 这里仅展示如何取出图片,具体实现幻灯根据业务需求自行实现。

2.9. 列表页获取文章详情

<!-- 如果在首页获取需要指定typeid -->
{ms:arclist} {ms:data dataid=field.id} ${field.title} <br />
${field.content} <br />
{/ms:data} {/ms:arclist}

2.10. 列表页获取文章纯文本详情(5.3.5 及以上版本)

{ms:arclist} {ms:data dataid=field.id}
<div>全部内容纯文本: ${MUtil.html2text(field.content)}</div>
<div>
  <#assign _fieldContent = MUtil.html2text(field.content)> 截取部分内容纯文本:
  {@ms:len _fieldContent 50 /}
</div>
{/ms:data} {/ms:arclist}

2.11. size 属性特殊用法

注意:此用法不能与 ispaging 同时使用

<!-- size="起始数,获取总数",如size="1,2",就是一共获取两条数据,排除第一条,取得后面所有的数据 -->
{ms:arclist size="1,2" typeid=72}
<li class="anim anim-1">
    <div class="product_b">
        <#if field.outlink!="">
        <a href="${field.outlink}" title="${field.title}" target="_blank">
        <#else>
        <a href="{ms:global.html/}${field.link}" title="${field.title}">
        </#if>
        <div class="imgs"><img src="{@ms:file field.litpic/}" alt="${field.title}">
            <p>&nbsp;</p>
        </div>
        <h2 class="f24">${field.title}</h2>
        <p>{@ms:len field.descrip 50 /}</p>
    </a></div>
</li>
{/ms:arclist}

2.12. orderby多字段使用样例(5.4.2及以上版本)

<!--orderby指定多个排序字段,只支持一种排序,优先级按orderby的顺序来-->
<!--如下 优先按sort倒序排,sort相同按date倒序排-->
{ms:arclist orderby='sort,date' order='desc'}
    ${field.title}
{/ms:arclist}
Copyright © mingsoft.net 2021 all right reserved,powered by Gitbook该文件修订时间: 2024-11-06 15:54:52

results matching ""

    No results matching ""

    results matching ""

      No results matching ""