本文档介绍 ydtaglib 提供的自定义模板标签库,包括启用方式、可用标签、属性说明以及示例用法,帮助你在前台模板中便捷地渲染内容列表和栏目字段等数据。
快速上手
在官方的前台模板文件中(如 template/cms/...)直接书写
可用标签
当前模块在基础 CMS 标签库的基础上新增了以下标签:
ylist:内容列表容器(支持分页、筛选、缓存等)ylist_item:列表循环项(置于ylist内部)ylist_empty:空数据时的渲染块(置于ylist内部)ylist_empty_any:按名称检查任意列表是否为空(进阶用法)sort_field:输出指定栏目的单个字段
说明:本模块继承了 CMS 的通用标签库(modules/cms/taglib/Bd.php),因此 {bd:list}、{bd:nav}、{bd:sort} 等基础标签也可正常使用。
本文侧重介绍本模块新增的 ylist 系列与 sort_field。
ylist — 内容列表
作用:相比官方list标签,支持空元素渲染和数据缓存
常用属性:
scode:栏目编码传
*表示所有栏目省略时默认取当前栏目
$sort['scode'],且若未显式设置page,会自动开启分页(等价于page="1")page:是否分页(true/false或页码参数)start:起始偏移(默认0)num:数量限制order:排序表达式(如id desc)filter:筛选条件(表达式或变量)tags:标签筛选(字符串)fuzzy:标签筛选是否模糊匹配(默认true)isico、ispics、istop、isrecommend、isheadline:常见布尔筛选项name:列表数据在模板中的命名(默认bd_list,多个list须指定不同的name)cache:是否使用缓存(true/false,默认false)
示例:

开启缓存:

缓存键由查询参数组合并 md5 生成;当筛选条件、排序或数量变更时,会形成不同的缓存键。
ylist_item — 列表项循环
作用:ylist必须使用的列表项标签!需置于 ylist 内部。
属性:
alias:当前项在循环内的别名(默认list)empty:空数据时的占位内容(建议使用ylist_empty代替)key:当前循环索引名称(默认i)mod:奇偶等取模标记(默认2),可用于样式切换
示例:

ylist_empty — 空数据渲染
作用:当列表数据为空时渲染其中内容;需置于 ylist 内部。
示例:

ylistemptyany — 任意位置的空数据标签(进阶)
作用:如果你的空元素在列表外面,可以使用这个标签
注意:在ylist调用后面调用本标签,name必须和list的name对应
属性:
name:与ylist的name属性保持一致。例如name="article"。
示例:

注:更常见的做法是使用置于 ylist 内部的 ylist_empty,ylist_empty_any 适用于空态提示需要与列表块分离的位置化需求。
sort_field — 输出栏目字段
作用:根据 scode 加载栏目并输出指定字段的值,常用于 SEO 字段、扩展字段等场景。比官方的sort标签更方便调用。
属性:
scode:栏目编码(可传模板变量如$sort['scode'])field:要输出的字段名(必填)
示例:

当
ylist未显式传入scode时,默认取当前栏目$sort['scode'],并自动开启分页。开启缓存后,如后台内容有更新,需要根据你的缓存策略主动清理相关缓存键,或在模板中暂时关闭缓存以观察效果。
基础 CMS 标签混用时,请注意
{bd:list}与{bd:ylist}的差异:ylist是本模块扩展,具备缓存和更灵活的空标签支持。
欢迎提出新标签需求!
