1.1. 文章列表 ms:arclist
读取文章列表数据
1.2. 适用模版
首页模版、列表模版、内容模版、自定义页面模版
[!tip]主页面模版使用:如果不设置typeid会取出所有的栏目下的数据,推荐增加typeid值;
列表模版使用: 可以不设置typeid参数,默认为当前访问的栏目ID,分页列表必须使用ispaging
属性,注意:每个列表模版只能有一个使用了ispaging
属性的arclist
标签;
内容模版使用: 可以不设置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,以逗号分隔,返回多个栏目下的文章,如果设置了typeid 参数,该参数将不会生效 |
size | 整型 | 否 | >0 | 20 | 返回文档列表总数,默认为20条全部返回,也可以配合分页使用 |
topflag | 字符串 | 否 | c,f,h,p, | 无 | 指定某类属性的文章固定优先获取,即文章置顶效果 |
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 | 无 | 根据时间排序:date,根据更新时间排序:updatedate,根据文章自定义顺序排序:sort,根据文章点击数排序:hit(如果点击量增加了,需要重新生成排序才会变化),不填则显示默认顺序 |
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} | 文章标签,多个以","隔开 |
${field.css} | 文章标题样式,常规用法为用来控制某篇文章标题的样式特殊展示;企业版本及政务版本支持。 |
${field.*} | 其他自定义标签,使用代码生成器拖拽的字段名 |
[!tip]
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不能使用在上下篇的文章列表,会导致上下篇和列表显示不一致;
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使用范例
类似效果如微博热搜
{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>
</#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>
{/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. 首页大幻灯
背景图幻灯可以通过创建一个 幻灯栏目
,再创建对应的文章
,文章只上传缩略图,如果还有其他文章信息,可以灵活使用其他字段填充,通过对应标签
获取
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}