模板标签手册

导航、列表、详情和分页,从需要的页面效果出发,查标签、看参数、用示例。

59 个标签
标签语法、作用域与扩展说明

本手册包含基础语法、内容、栏目与系统标签,以及插件和专题扩展;扩展标签需要对应插件已安装并启用。

模板就是由这些标签拼出来的。自闭合标签写成 {djm:name 参数="值"/},需要循环或包裹 HTML 时用块级形式,循环内部用 [field:字段/] 取值,循环外部读取当前实体用 {djm:field.字段/}。

命名空间{djm:arclist/}

所有标签都在 djm: 命名空间下,未知标签和非法属性会在保存或启用主题时被拒绝。

取值作用域[field:title/]

只读取最近一层循环的当前行;页面实体用 {djm:field.title/}。

默认转义raw="1"

普通文本始终转义,只有声明为富文本的字段才允许 raw 输出。

语法 9

模板语法的骨架:条件、循环、变量与包含。

date日期格式化自闭合 · 语法

格式化时间戳或当前循环字段中的时间值;format 使用 PHP 风格占位符。

{djm:date/}
参数类型必填默认说明
timestampstring可选—Unix 时间戳;与 field 二选一。
fieldstring可选—当前上下文中的字段名。
formatstring可选—时间格式,支持 Y、y、m、n、d、j、H、h、i、s 和 U;默认 Y-m-d H:i:s。
{djm:date field="published_at" format="Y-m-d"/}
foreach列表遍历块级 · 语法

遍历一个列表值(例如栏目图集 category.images)。对象项会把自身字段并入当前上下文,外层循环字段仍然可读。

{djm:foreach from="from"}...{/djm:foreach}
参数类型必填默认说明
fromstring必填—必填。要遍历的列表值路径,例如 category.images。
asstring可选item循环变量名,默认 item。 默认值:item。
{djm:foreach from="category.images" as="img"}
  <img src="[field:src/]" alt="[field:title/]">
{/djm:foreach}
循环内可用字段(3)
  • index循环序号
  • is_first是否第一条
  • is_last是否最后一条
if条件判断块级 · 语法

按模板表达式执行条件分支,可配合 {djm:else/}。

{djm:if condition="condition"}...{/djm:if}
参数类型必填默认说明
conditionstring必填—必填。条件表达式;支持 ==、!=、>、<、>=、<= 比较,and/or/not 逻辑运算与括号,值可用引号包裹(允许空格)。语法错误会在保存模板时被拒绝。
{djm:if condition="field:title != ''"}
  [field:title/]
{djm:else/}
  暂无标题
{/djm:if}
img图片输出自闭合 · 语法

安全输出图片 URL 或完整 img 元素;field 可读取详情内容字段或 ext.扩展图片字段。

{djm:img/}
参数类型必填默认说明
srcstring可选—图片 URL;与 field 二选一。
fieldstring可选—当前上下文中的字段名。
widthinteger可选0图片宽度,0 表示不输出。 默认值:0。 范围:0-10000。
heightinteger可选0图片高度,0 表示不输出。 默认值:0。 范围:0-10000。
defaultstring可选—源值为空时的替代值。
lazyboolean可选1设为 1 输出原生懒加载属性。 默认值:1。
altstring可选—图片替代文字。
outputstring可选—输出模式;img 输出完整 img 元素(html 为等价别名),留空只输出 URL。
{djm:img field="ext.gallery_image_1" default="/assets/placeholder.png" lazy="1" alt="产品图" output="img"/}
include包含文件自闭合 · 语法

包含当前主题内的模板片段,路径相对主题根目录且禁止越界。

{djm:include file="file"/}
参数类型必填默认说明
filestring必填—必填。主题根目录内的相对模板路径。
{djm:include file="inc/footer.html"/}
loop数值循环块级 · 语法

生成整数序列循环,循环变量通过 [field:变量名/] 读取。

{djm:loop}...{/djm:loop}
参数类型必填默认说明
varstring可选—循环变量名,默认 i;循环内始终可以用 [field:i/] 读取当前值。
frominteger可选1循环起始整数。 默认值:1。 范围:-10000-10000。
tointeger可选0循环结束整数。 默认值:0。 范围:-10000-10000。
stepinteger可选1循环步长,不能为 0。 默认值:1。 范围:-10000-10000。
{djm:loop var="i" from="1" to="5" step="1"}
  [field:i/]
{/djm:loop}
pagelist分页导航双形态 · 语法

输出 list 或 search 产生的分页导航;块形式可使用分页字段自定义结构。

{djm:pagelist/}
参数类型必填默认说明
pagesizeinteger可选10显示的页码数量。 默认值:10。 范围:1-100。
prevtextstring可选—上一页文字。
nexttextstring可选—下一页文字。
firsttextstring可选—首页文字。
lasttextstring可选—末页文字。
{djm:pagelist pagesize="7" prevtext="上一页" nexttext="下一页"/}
循环内可用字段(9)
  • current是否为当前页
  • index循环序号
  • is_first是否为第一页
  • is_last是否为最后一页
  • next_url下一页 URL;最后一页为空
  • page页码
  • prev_url上一页 URL;第一页为空
  • total_pages总页数
  • url该页 URL
str字符串处理自闭合 · 语法

对字符串执行受控处理;op 支持 sub/cut 截断、strip 去 HTML、nl2br 换行转 br、upper、lower、trim、urlencode。

{djm:str value="value" op="op"/}
参数类型必填默认说明
valuestring必填—必填。待处理字符串,也可以引用上下文字段。
opstring必填—必填。字符串操作:sub/cut 截断、strip 去 HTML、nl2br 换行转 br、upper、lower、trim、urlencode。
leninteger可选0最大字符数,0 表示不截断;按字符(非字节)截断。 默认值:0。 范围:0-10000。
suffixstring可选—截断后追加的文字。
{djm:str value="模板标题" op="cut" len="4" suffix="..."/}
var模板变量字段 · 语法

读取页面级变量;命名空间通过点号访问,例如搜索页用 {djm:var.search.keyword/} 保留搜索词,栏目单页用 {djm:var.page_content/} 读取单页正文。

{djm:var.search.keyword/}
参数类型必填默认说明
rawboolean可选0仅对已经是可信 HTML 的值生效(例如声明为 rich_text 的字段);普通文本始终转义,不会因 raw 而放行。 默认值:0。

内容 13

内容列表、详情字段、分页、上下篇与搜索。

arclist内容列表块级 · 内容

按栏目、标签、模型、关键词或标志筛选公开内容,适合首页和聚合页。

{djm:arclist}...{/djm:arclist}
参数类型必填默认说明
typeidstring可选—栏目 ID,或 current 表示当前栏目(在 nav/channellist 循环里取当前循环的栏目);暂不支持一次写多个 ID。
tagstring可选—标签别名,用于精确筛选内容。
rowinteger可选10最多输出条数。 默认值:10。 范围:1-100。
orderbyenum可选published_at内容排序仅支持 published_at、pubdate、views、sort 和 id;不支持随机或点赞排序。 默认值:published_at。 可选值:published_at、views、sort、id。
orderdirstring可选—排序方向:desc 倒序,asc 正序。
flagstring可选—内容标志:top、recommend、hot、image;多个值用英文逗号分隔并取交集。
keywordstring可选—内容标题或摘要包含该关键词。
modelstring可选—模型编码。
startdayinteger可选0仅查询最近多少天发布的内容,0 表示不限制。 默认值:0。 范围:0-36500。
titleleninteger可选0标题最大字符数,0 表示不截断。 默认值:0。 范围:0-10000。
summaryleninteger可选0摘要最大字符数,0 表示不截断。 默认值:0。 范围:0-10000。
paginateboolean可选0设为 1 创建分页上下文。 默认值:0。
{djm:arclist typeid="1" row="10" orderby="published_at" orderdir="desc"}
  <a href="[field:url/]">[field:title/]</a>
{/djm:arclist}
循环内可用字段(22)
  • category_id栏目 ID
  • category_name栏目名称
  • category_path栏目路径
  • cover_image封面图 URL
  • ext.字段编码已发布的模型扩展字段
  • id内容 ID
  • index当前循环序号(从 1 开始)
  • is_featured是否推荐
  • is_hot是否热门
  • is_recommend是否推荐(兼容字段,包含 is_featured)
  • is_top是否置顶
  • model_code模型编码
  • model_id模型 ID
  • published_at发布时间
  • slugURL 别名
  • sort_order后台排序值
  • summary摘要
  • thumb_image栏目缩略图 URL,未配置时为空,可回退 cover_image
  • title标题(搜索页可能包含 mark 高亮)
  • title_plain纯文本标题,适合输出到 img alt 等 HTML 属性
  • url内容访问 URL
  • views阅读数;同一访客 30 分钟内重复打开详情页只计一次
commentform评论表单双形态 · 内容

输出带安全令牌的评论表单;自闭合形式生成完整表单,块形式可自定义表单结构。

{djm:commentform/}
参数类型必填默认说明
contentidstring可选—内容 ID;详情页可省略并使用当前内容。
<h3>发表评论</h3>
{djm:commentform/}
循环内可用字段(5)
  • action评论 API 地址
  • captcha验证码控件 HTML;站点未开启时为空
  • content_id内容 ID
  • form_token一次性表单令牌
  • started_at表单生成时间
comments评论列表块级 · 内容

输出指定内容的已审核根评论,详情页可省略 contentid;块内可嵌套 replies 展示一级回复。

{djm:comments}...{/djm:comments}
参数类型必填默认说明
rowinteger可选20最多输出条数。 默认值:20。 范围:1-100。
contentidstring可选—内容 ID;详情或内容循环中可省略。
orderbystring可选—评论排序:asc(默认,正序)或 desc(倒序)。
statusstring可选—评论状态;公开模板只允许 approved。
{djm:comments row="20" orderby="asc"}
  <article class="comment">
    <header><strong>[field:nickname/]</strong><time>{djm:date field="created_at" format="Y-m-d H:i"/}</time></header>
    <p>[field:body/]</p>
    {djm:replies row="100"}
    <div class="comment-reply"><strong>[field:nickname/]</strong><p>[field:body/]</p></div>
    {/djm:replies}
  </article>
{/djm:comments}
循环内可用字段(9)
  • body已转义正文
  • content_id内容 ID
  • created_at提交时间
  • id评论 ID
  • index循环序号
  • nickname昵称
  • parent_id父评论 ID
  • replies一级回复列表,交给 {djm:replies} 遍历
  • reply_count回复数量
downloads内容下载块级 · 内容

遍历当前内容的下载资源。

{djm:downloads}...{/djm:downloads}
参数类型必填默认说明
maxinteger可选100最多输出的资源数量。 默认值:100。 范围:1-500。
{djm:downloads max="20"}
  <a href="[field:url/]" download>[field:name/] [field:version/]</a>
{/djm:downloads}
循环内可用字段(13)
  • attachment_id附件 ID
  • download_count下载次数
  • extraction_code提取码
  • file_size字节数
  • file_size_text格式化文件大小
  • id资源 ID
  • index循环序号
  • name资源名称
  • platform适用平台
  • sha256文件 SHA-256
  • sort_order后台排序值
  • url下载 URL
  • version版本
field内容字段字段 · 内容

读取当前内容字段;详情页使用 djm:field,列表循环内使用 [field:字段/],阅读数可用 views。栏目单页模板里还能读取该栏目在后台配置的自定义字段,写法相同(例如 {djm:field.intro_title/},富文本按已清洗 HTML 输出、图片补 /storage/ 前缀)。

{djm:field.title/}
参数类型必填默认说明
defaultstring可选—源值为空时的替代值。
leninteger可选0最大字符数,0 表示不截断;按字符(非字节)截断。 默认值:0。 范围:0-10000。
rawboolean可选0仅对已经是可信 HTML 的值生效(例如声明为 rich_text 的字段);普通文本始终转义,不会因 raw 而放行。 默认值:0。
{djm:field.title len="60" default="暂无标题"/}
{djm:field.views/}
循环内可用字段(22)
  • category_id栏目 ID
  • category_name栏目名称
  • category_path栏目路径
  • cover_image封面图 URL
  • ext.字段编码已发布的模型扩展字段
  • id内容 ID
  • index当前循环序号(从 1 开始)
  • is_featured是否推荐
  • is_hot是否热门
  • is_recommend是否推荐(兼容字段,包含 is_featured)
  • is_top是否置顶
  • model_code模型编码
  • model_id模型 ID
  • published_at发布时间
  • slugURL 别名
  • sort_order后台排序值
  • summary摘要
  • thumb_image栏目缩略图 URL,未配置时为空,可回退 cover_image
  • title标题(搜索页可能包含 mark 高亮)
  • title_plain纯文本标题,适合输出到 img alt 等 HTML 属性
  • url内容访问 URL
  • views阅读数;同一访客 30 分钟内重复打开详情页只计一次
hotlist热门内容块级 · 内容

输出热门内容兼容列表;默认按发布时间排序,传 orderby="views" 才按真实阅读数排序,可用 startday 限制最近内容范围。

{djm:hotlist}...{/djm:hotlist}
参数类型必填默认说明
typeidstring可选—栏目 ID,或 current 表示当前栏目(在 nav/channellist 循环里取当前循环的栏目);暂不支持一次写多个 ID。
rowinteger可选10最多输出条数。 默认值:10。 范围:1-100。
orderbyenum可选published_at内容排序仅支持 published_at、pubdate、views、sort 和 id;不支持随机或点赞排序。 默认值:published_at。 可选值:published_at、views、sort、id。
startdayinteger可选0仅查询最近多少天发布的内容,0 表示不限制。 默认值:0。 范围:0-36500。
titleleninteger可选0标题最大字符数,0 表示不截断。 默认值:0。 范围:0-10000。
{djm:hotlist row="10" orderby="views" startday="30"}
  <a href="[field:url/]">[field:title/]([field:views/] 次阅读)</a>
{/djm:hotlist}
循环内可用字段(22)
  • category_id栏目 ID
  • category_name栏目名称
  • category_path栏目路径
  • cover_image封面图 URL
  • ext.字段编码已发布的模型扩展字段
  • id内容 ID
  • index当前循环序号(从 1 开始)
  • is_featured是否推荐
  • is_hot是否热门
  • is_recommend是否推荐(兼容字段,包含 is_featured)
  • is_top是否置顶
  • model_code模型编码
  • model_id模型 ID
  • published_at发布时间
  • slugURL 别名
  • sort_order后台排序值
  • summary摘要
  • thumb_image栏目缩略图 URL,未配置时为空,可回退 cover_image
  • title标题(搜索页可能包含 mark 高亮)
  • title_plain纯文本标题,适合输出到 img alt 等 HTML 属性
  • url内容访问 URL
  • views阅读数;同一访客 30 分钟内重复打开详情页只计一次
images内容图集块级 · 内容

遍历当前内容的原生图集;也可用 field 读取任意模型已发布的 image 扩展字段或兼容图片数组。

{djm:images}...{/djm:images}
参数类型必填默认说明
fieldstring可选—当前上下文中的字段名。
maxinteger可选100最多输出的资源数量。 默认值:100。 范围:1-500。
{djm:images field="gallery_image_1" max="20"}
  <img src="[field:src/]" alt="[field:title/]">
{/djm:images}
循环内可用字段(7)
  • attachment_id附件 ID
  • description图片说明
  • index循环序号
  • sort_order后台排序值
  • src图片 URL
  • title图片标题或说明
  • url图片 URL(兼容字段)
list当前栏目内容块级 · 内容

输出当前栏目列表页的内容,paginate=1 时与 pagelist 共用分页上下文。

{djm:list}...{/djm:list}
参数类型必填默认说明
typeidstring可选—栏目 ID,或 current 表示当前栏目(在 nav/channellist 循环里取当前循环的栏目);暂不支持一次写多个 ID。
rowinteger可选15最多输出条数。 默认值:15。 范围:1-100。
orderbyenum可选published_at内容排序仅支持 published_at、pubdate、views、sort 和 id;不支持随机或点赞排序。 默认值:published_at。 可选值:published_at、views、sort、id。
orderdirstring可选—排序方向:desc 倒序,asc 正序。
flagstring可选—内容标志:top、recommend、hot、image;多个值用英文逗号分隔并取交集。
keywordstring可选—内容标题或摘要包含该关键词。
titleleninteger可选0标题最大字符数,0 表示不截断。 默认值:0。 范围:0-10000。
paginateboolean可选0设为 1 创建分页上下文。 默认值:0。
{djm:list row="15" paginate="1"}
  <a href="[field:url/]">[field:title/]</a>
{/djm:list}
循环内可用字段(22)
  • category_id栏目 ID
  • category_name栏目名称
  • category_path栏目路径
  • cover_image封面图 URL
  • ext.字段编码已发布的模型扩展字段
  • id内容 ID
  • index当前循环序号(从 1 开始)
  • is_featured是否推荐
  • is_hot是否热门
  • is_recommend是否推荐(兼容字段,包含 is_featured)
  • is_top是否置顶
  • model_code模型编码
  • model_id模型 ID
  • published_at发布时间
  • slugURL 别名
  • sort_order后台排序值
  • summary摘要
  • thumb_image栏目缩略图 URL,未配置时为空,可回退 cover_image
  • title标题(搜索页可能包含 mark 高亮)
  • title_plain纯文本标题,适合输出到 img alt 等 HTML 属性
  • url内容访问 URL
  • views阅读数;同一访客 30 分钟内重复打开详情页只计一次
prenext上一篇下一篇自闭合 · 内容

输出当前内容的上一篇或下一篇;type=pre 为上一篇,type=next 为下一篇。

{djm:prenext/}
参数类型必填默认说明
typeenum可选prepre 输出上一篇,next 输出下一篇;省略时兼容为 pre。 默认值:pre。 可选值:pre、next。
prenonestring可选—没有上一篇时的替代文字。
nextnonestring可选—没有下一篇时的替代文字。
tplstring可选—自定义链接模板,可用 [field:title/]、[field:url/],也兼容 {title}、[title]、{url}、[url]。
{djm:prenext type="pre" prenone="没有上一篇"/}
{djm:prenext type="next" nextnone="没有下一篇"/}
replies评论回复块级 · 内容

在 comments 循环内输出当前根评论的一级回复。

{djm:replies}...{/djm:replies}
参数类型必填默认说明
rowinteger可选100最多输出条数。 默认值:100。 范围:1-100。
{djm:replies row="100"}
  <div class="comment-reply"><strong>[field:nickname/]</strong><p>[field:body/]</p></div>
{/djm:replies}
循环内可用字段(8)
  • body已转义正文
  • content_id内容 ID
  • created_at提交时间
  • id回复 ID
  • index循环序号
  • nickname昵称
  • parent_id根评论 ID
  • reply_count该回复下的回复数量
taglist内容标签块级 · 内容

输出内容标签;在内容循环内默认读取当前内容的标签。

{djm:taglist}...{/djm:taglist}
参数类型必填默认说明
rowinteger可选20最多输出条数。 默认值:20。 范围:1-100。
orderbystring可选—标签排序:sort(默认按后台排序)、name 或 id。
contentidstring可选—内容 ID;详情或内容循环中可省略。
nameleninteger可选0标签名称最大字符数,0 表示不截断。 默认值:0。 范围:0-10000。
{djm:taglist row="20" orderby="name"}
  <a class="tag" href="[field:url/]">#[field:name/]</a>
{/djm:taglist}
循环内可用字段(7)
  • content_count关联内容数
  • description标签说明
  • id标签 ID
  • index循环序号
  • name标签名称
  • slug标签别名
  • url标签页 URL

栏目 4

栏目树、导航与栏目单页字段。

blocks栏目关联内容块级 · 栏目

遍历当前栏目在后台挑选并排序的关联内容(业务板块、文化卡片、品牌 Logo 等)。循环体内可读标题、摘要、链接、封面与缩略图;栏目未配置关联内容时输出空串。关联内容挂在栏目上,因此在栏目页面(列表模板与栏目单页模板)有数据,内容详情页输出空串。

{djm:blocks}...{/djm:blocks}
参数类型必填默认说明
maxinteger可选100最多输出的资源数量。 默认值:100。 范围:1-200。
{djm:blocks max="20"}
  <li><img src="[field:thumb_image/]" alt="[field:title/]"><a href="[field:url/]">[field:title/]</a></li>
{/djm:blocks}
循环内可用字段(10)
  • category_name所属栏目
  • cover_image封面图地址
  • id内容 ID
  • index循环序号
  • published_at发布时间
  • slug别名
  • summary摘要
  • thumb_image栏目缩略图地址(未配置时回退封面)
  • title标题
  • url详情地址
channellist栏目列表块级 · 栏目

输出指定栏目及其子栏目,不要求栏目开启导航显示。

{djm:channellist}...{/djm:channellist}
参数类型必填默认说明
typeidstring可选—栏目 ID,或 current 表示当前栏目(在 nav/channellist 循环里取当前循环的栏目);暂不支持一次写多个 ID。
rowinteger可选100最多输出条数。 默认值:100。 范围:1-100。
depthinteger可选1栏目递归层级。 默认值:1。 范围:1-20。
{djm:channellist typeid="current" depth="2"}
  <a href="[field:url/]">[field:name/]</a>
{/djm:channellist}
循环内可用字段(16)
  • access_mode访问控制模式
  • active是否为当前栏目或其祖先栏目
  • category_id栏目 ID(兼容字段)
  • cover_image栏目封面 URL
  • description栏目说明
  • external是否为外部链接
  • full_path站内完整栏目路径
  • id栏目 ID
  • index当前循环序号
  • name栏目名称
  • parent_id父栏目 ID,顶级栏目为 0
  • rel链接 rel 属性(nofollow / noopener 组合)
  • slug栏目别名
  • target链接打开方式
  • thumb_image栏目缩略图 URL,未配置时为空
  • url栏目或外链访问地址
crumbs面包屑双形态 · 栏目

输出当前页面从首页到当前栏目的面包屑;块形式可完全自定义结构。

{djm:crumbs/}
参数类型必填默认说明
separatorstring可选—自闭合面包屑的分隔符。
hometextstring可选—首页链接文字。
homeurlstring可选—首页链接地址。
{djm:crumbs separator=" > " hometext="首页" homeurl="/"/}
循环内可用字段(16)
  • access_mode访问控制模式
  • active是否为当前栏目或其祖先栏目
  • category_id栏目 ID(兼容字段)
  • cover_image栏目封面 URL
  • description栏目说明
  • external是否为外部链接
  • full_path站内完整栏目路径
  • id栏目 ID
  • index当前循环序号
  • name栏目名称
  • parent_id父栏目 ID,顶级栏目为 0
  • rel链接 rel 属性(nofollow / noopener 组合)
  • slug栏目别名
  • target链接打开方式
  • thumb_image栏目缩略图 URL,未配置时为空
  • url栏目或外链访问地址

系统 4

站点配置、日期、字符串、图片与验证码。

captcha图形验证码双形态 · 系统

输出图形验证码的图片、输入框与一次性令牌;后台开启“人机验证”后才输出,评论表单已自动内嵌,自建表单才需要手写。块形式可用 captcha_image、captcha_token 自定义结构。

{djm:captcha/}
<form method="post" action="/">
  {djm:captcha/}
  <button type="submit">提交</button>
</form>
循环内可用字段(2)
  • captcha_image验证码图片地址
  • captcha_token一次性验证码令牌
config系统配置自闭合 · 系统

读取允许公开的 site.*、seo.*、interaction.* 或已启用的 custom.* 系统配置。

{djm:config name="name"/}
参数类型必填默认说明
namestring必填—必填。配置键或资源名称。
{djm:config name="custom.company_slogan"/}
performance页面性能自闭合 · 系统

输出当前页面模板渲染耗时或 Provider 数据读取指标;仅开发环境(debug 开启)输出,生产环境为空字符串。

{djm:performance/}
参数类型必填默认说明
metricenum可选page_ms指标:page_ms 渲染毫秒、db_reads 数据读取批次、db_ms 数据读取毫秒。 默认值:page_ms。 可选值:page_ms、db_reads、db_ms。
precisioninteger可选2小数位数。 默认值:2。 范围:0-3。
{djm:performance metric="page_ms" precision="2"/}
user当前会员字段 · 系统

读取当前登录会员的公开字段,不提供邮箱等隐私字段。

{djm:user.islogin/}
{djm:if condition="user.islogin == 1"}
  <a href="/member/account">{djm:user.nickname/}</a>
{djm:else/}
  <a href="/member/login">登录</a>
{/djm:if}
循环内可用字段(5)
  • avatar头像 URL
  • id会员 ID
  • islogin是否已登录
  • nickname昵称
  • username登录名

扩展 2

广告位与插件挂载点。

插件 17

banner、SEO 与统计插件提供的标签。

seo_toolkit.headSEO 头部元信息自闭合 · 插件

在 head 内输出 canonical、robots、Open Graph、Twitter 与 JSON-LD。插件只返回数据,meta/link/title/script 由 CMS 核心按白名单与 URL 校验生成,因此不会输出未经验证的标记。

{djm:seo_toolkit.head/}
参数类型必填默认说明
contentstring可选—覆盖正文来源(可选)。
urlstring可选—覆盖 canonical 地址(可选,**必须是绝对 http(s) 地址**;写相对路径会让页面报错,推荐不传)。
typestring可选—Open Graph 类型,例如 website、article。
robotsstring可选—robots 指令,例如 index,follow。
categorystring可选—栏目页覆盖:指定输出哪个栏目的信息(可选)。
{djm:seo_toolkit.head type="website" optional="1"/}
site_analytics.tracker站点统计脚本自闭合 · 插件

为当前页面加载第一方统计脚本,建议放在公共页脚并加 optional=1。插件只提供数据,script 标签由内核按受控资源通道生成(插件直接返回 HTML 会被按文本转义)。只记录路径、标题、匿名访客标识、来源主机与设备类型,不记录 IP、完整来源 URL、查询参数与正文,访客可用浏览器 Do Not Track 退出。

{djm:site_analytics.tracker/}
{djm:site_analytics.tracker optional="1"/}

专题 10

专题聚合页的列表、节点与字段。

topics.blocks专题区块块级 · 专题

在 topics.detail 内遍历当前专题的可见区块;隐藏区块不加载依赖,可选区块故障只局部降级。

{djm:topics.blocks}...{/djm:topics.blocks}
参数类型必填默认说明
typestring可选—只输出指定类型的区块。
{djm:topics.blocks}
  <section id="[field:anchor/]">
    <h2>[field:title/]</h2>
  </section>
{/djm:topics.blocks}
循环内可用字段(14)
  • alt图片替代文本
  • anchor区块锚点(专题内唯一)
  • block_id区块标识
  • html已清洗的富文本 HTML
  • image_url区块图片 URL
  • index循环序号
  • is_first是否第一个区块
  • is_last是否最后一个区块
  • layout布局方向,例如 left
  • mobile_image_url移动端图片 URL(未配置时回退 image_url)
  • subtitle区块副标题
  • text区块纯文本
  • title区块标题
  • type区块类型
topics.buttons区块按钮块级 · 专题

遍历当前区块解析后的按钮;跳转目标已按受控类型(内容、专题、锚点、路由、外链)解析为地址。

{djm:topics.buttons}...{/djm:topics.buttons}
{djm:topics.buttons}
  <a class="topic-button" href="[field:url/]">[field:label/]</a>
{/djm:topics.buttons}
循环内可用字段(6)
  • external是否为外部链接
  • index循环序号
  • is_first是否第一个按钮
  • is_last是否最后一个按钮
  • label按钮文字
  • url解析后的地址
topics.detail专题详情块级 · 专题

按 slug 或 id 输出单个已发布专题,块内可嵌套 topics.blocks;省略参数时使用当前专题作用域。

{djm:topics.detail}...{/djm:topics.detail}
参数类型必填默认说明
slugstring可选—专题标识。
idinteger可选0专题 ID;与 slug 二选一。 默认值:0。 范围:0-9007199254740991。
{djm:topics.detail slug="summer-launch"}
  <h1>[field:title/]</h1>
  <p>[field:summary/]</p>
{/djm:topics.detail}
循环内可用字段(10)
  • cover_url专题封面图 URL
  • id专题 ID
  • public_path公开访问路径
  • seo_descriptionSEO 描述
  • seo_titleSEO 标题
  • slug专题标识
  • summary专题简介
  • template_id专题模板标识
  • template_version专题模板版本
  • title专题标题
topics.documents专题文档块级 · 专题

输出节点内的公开文档;limit/offset 只截取当前节点的有界结果,不额外取稿,下线内容与受限栏目内容会被剔除。

{djm:topics.documents}...{/djm:topics.documents}
参数类型必填默认说明
slugstring可选—专题标识。
idinteger可选0专题 ID。 默认值:0。 范围:0-9007199254740991。
codestring可选—节点编码。
nodestring可选—节点编码(与 code 等价)。
limitinteger可选100最多输出条数。 默认值:100。 范围:0-100。
offsetinteger可选0跳过条数。 默认值:0。 范围:0-1000000。
{djm:topics.documents slug="industry" node="news" limit="10" offset="0"}
  <a href="[field:public_path/]">[field:title/]</a>
{/djm:topics.documents}
循环内可用字段(13)
  • category_id栏目 ID
  • category_name所属栏目
  • cover_image封面图 URL
  • id内容 ID
  • index循环序号
  • is_first是否第一条
  • is_last是否最后一条
  • model_code内容模型编码
  • model_id模型 ID
  • public_path公开访问路径
  • slug内容别名
  • summary摘要
  • title标题
topics.field专题字段自闭合 · 专题

输出当前专题作用域里的一个字段,字段名通过 name 指定。

{djm:topics.field name="name"/}
参数类型必填默认说明
namestring必填—必填。字段名,例如 title、summary、public_path。
<h1>{djm:topics.field name="title"/}</h1>
topics.items区块条目块级 · 专题

遍历当前区块解析后的条目;卖点类条目是 title/text,FAQ 类条目是 question/answer。

{djm:topics.items}...{/djm:topics.items}
{djm:topics.items}
  <li><strong>[field:title/]</strong><p>[field:text/]</p></li>
{/djm:topics.items}
循环内可用字段(7)
  • answer答案(FAQ)
  • index循环序号
  • is_first是否第一条
  • is_last是否最后一条
  • question问题(FAQ)
  • text条目正文(卖点)
  • title条目标题(卖点)
topics.list专题列表块级 · 专题

输出已发布、未删除的专题;可用 group、featured 筛选,content_id 按内容反查显式引用(不包含自动规则命中)。

{djm:topics.list}...{/djm:topics.list}
参数类型必填默认说明
groupstring可选—专题分组编码。
featuredboolean可选0true 只输出推荐专题。 默认值:0。
content_idinteger可选0按已发布版本显式引用的内容 ID 反查专题。 默认值:0。 范围:0-9007199254740991。
limitinteger可选10最多输出条数。 默认值:10。 范围:0-100。
offsetinteger可选0跳过条数。 默认值:0。 范围:0-1000000。
{djm:topics.list group="campaign" featured="true" limit="6"}
  <article>
    <h2><a href="[field:public_path/]">[field:title/]</a></h2>
    <p>[field:summary/]</p>
  </article>
{/djm:topics.list}
循环内可用字段(13)
  • cover_image专题封面图 URL
  • featured是否推荐
  • group_code专题分组编码
  • id专题 ID
  • index循环序号
  • is_first是否第一条
  • is_last是否最后一条
  • public_path公开访问路径
  • published_at发布时间
  • slug专题标识
  • sort_order后台排序值
  • summary专题简介(来自已发布版本)
  • title专题标题(来自已发布版本)
topics.node单个专题节点块级 · 专题

按 slug/id 与 code/node 输出单个节点,可在其内部使用 topics.documents。

{djm:topics.node}...{/djm:topics.node}
参数类型必填默认说明
slugstring可选—专题标识。
idinteger可选0专题 ID。 默认值:0。 范围:0-9007199254740991。
codestring可选—节点编码。
nodestring可选—节点编码(与 code 等价)。
{djm:topics.node slug="industry" code="news"}
  <h2>[field:name/]</h2>
  {djm:topics.documents}<a href="[field:public_path/]">[field:title/]</a>{/djm:topics.documents}
{/djm:topics.node}
循环内可用字段(9)
  • anchor节点锚点
  • code节点编码
  • count节点文档数量
  • description节点说明
  • items节点文档列表,交给 topics.documents 遍历
  • mode取稿模式
  • name节点名称
  • title节点标题
  • truncated文档是否因上限被截断
topics.nodes专题节点块级 · 专题

遍历专题内可见节点(隐藏节点不输出);可在节点内继续使用 topics.documents。

{djm:topics.nodes}...{/djm:topics.nodes}
参数类型必填默认说明
slugstring可选—专题标识。
idinteger可选0专题 ID;与 slug 二选一。 默认值:0。 范围:0-9007199254740991。
codestring可选—节点编码。
nodestring可选—节点编码(与 code 等价)。
{djm:topics.nodes}
  <h3 id="[field:anchor/]">[field:name/]</h3>
  {djm:topics.documents limit="10"}
  <a href="[field:public_path/]">[field:title/]</a>
  {/djm:topics.documents}
{/djm:topics.nodes}
循环内可用字段(12)
  • anchor节点锚点
  • code节点编码(专题内唯一)
  • count节点文档数量
  • description节点说明
  • index循环序号
  • is_first是否第一个节点
  • is_last是否最后一个节点
  • items节点文档列表,交给 topics.documents 遍历
  • mode取稿模式:manual 手动、auto 规则
  • name节点名称
  • title节点标题
  • truncated文档是否因上限被截断
topics.render专题区块片段自闭合 · 专题

输出指定区块的完整片段并自动加载该版本的 CSS/JS,由 CMS 原生提供,不嵌套完整 HTML 文档。

{djm:topics.render/}
参数类型必填默认说明
slugstring可选—专题标识。
idinteger可选0专题 ID;与 slug 二选一。 默认值:0。 范围:0-9007199254740991。
blockstring可选—区块标识(block_id 或锚点);省略时输出全部可见内容。
{djm:topics.detail slug="summer-launch"}
  {djm:topics.render block="hero-main"/}
{/djm:topics.detail}