如何在Apostrophe CMS的视图文件(宏)中为style添加额外属性?
解决行内样式合并padding的问题
你的问题出在两个地方:
- 模板语法错误:不能在
{{ }}内部再嵌套{{ }},直接写data.linkPadding即可; - 没有区分
options.style的类型(对象/字符串),直接用对象扩展语法会导致样式失效。
根据options.style的实际类型,对应以下两种解决方案:
情况1:options.style是对象类型(比如{ color: 'red', fontSize: '14px' })
需要先合并对象,再将对象转换为行内样式字符串:
<a {% if options.style or data.linkPadding %} style="{{ { ...options.style, padding: data.linkPadding } | css }}" {% endif %} href="{{ path }}" >some text</a>
注:| css是模板引擎(如Nunjucks)自带的过滤器,用于将样式对象转为key: value;格式的字符串。如果你的模板引擎没有这个过滤器,可以手动遍历拼接:
<a {% if options.style or data.linkPadding %} style="{% for key, val in { ...options.style, padding: data.linkPadding } %}{{ key }}: {{ val }}; {% endfor %}" {% endif %} href="{{ path }}" >some text</a>
情况2:options.style是字符串类型(比如"color: red; font-size: 14px;")
直接拼接padding样式即可,同时处理options.style为空的情况:
<a {% if options.style or data.linkPadding %} style="{% if options.style %}{{ options.style }} {% endif %}padding: {{ data.linkPadding }};" {% endif %} href="{{ path }}" >some text</a>
内容的提问来源于stack exchange,提问作者ABGR
相关产品推荐
相关产品推荐

