我可以使用列表作为自定义模板属性的值吗?
Posted
技术标签:
【中文标题】我可以使用列表作为自定义模板属性的值吗?【英文标题】:Can I use a list as the value of a custom template property? 【发布时间】:2020-04-24 08:04:08 【问题描述】:我在我的页面模板定义中使用自定义模板属性在我的模板脚本中的 body 标记上呈现 CSS 类。例如:
parameters:
body:
classes: example-body-class1
<body class="$def.parameters.body.classes!"></body>
渲染输出:
<body class="example-body-class1"></body>
但是,当我添加多个类时,我必须在它们之间添加空格。例如:
parameters:
body:
classes: example-body-class1 example-body-class2
渲染输出:
<body class="example-body-class1 example-body-class2"></body>
我想通过使用列表来改进这个设计。例如:
parameters:
body:
classes:
- example-body-class1
- example-body-class2
但是,当我转储 def.parameters.body.classes
的值时,它返回 null。
$cmsfn.dump(def.parameters.body.classes)
[#-- Returns --]
null (Null)
Magnolia custom template properties 文档示例引用了一个字符串值。
如果是这样,我如何将上面的列表呈现为一个字符串,每个项目用空格分隔?
【问题讨论】:
【参考方案1】:其实它们可以是列表,但是你需要用值来定义它们(参数通常是key:value
对。
定义:
title: "test"
renderType: freemarker
templateScript: /test.ftl
parameters:
list:
a: a
b: b
模板:
$cmsfn.dump(def.parameters,3,true)
[#list def.parameters.list as param, k]
$param!"nope"
[/#list]
输出:
Hash (1)
list = Hash (2)
a = "a" (String)
b = "b" (String)
a b
【讨论】:
以上是关于我可以使用列表作为自定义模板属性的值吗?的主要内容,如果未能解决你的问题,请参考以下文章
可以使用 std::unique 来确定自定义类的对象是不是具有相同的值吗?