带有json属性的重氮主题错误:“属性'data-plugin-options':无法编译表达式”

时间:2013-08-28 15:43:13

标签: json attributes plone theming diazo

我有一个静态主题,其中包含一些用于自定义jquery插件的json属性,比如

data-plugin-options='{"directionNav":false, "animation":"slide", "slideshow": false, "maxVisibleItems": 6}'

diazo编译器抱怨这个就像

Invalid expression [0:0]
compilation error, element 'div' [400:0]
Attribute 'data-plugin-options': Failed to compile the expression ''directionNav':false, 'animation':'slide', 'slideshow': false, 'maxVisibleItems': 6' in the AVT. [0:0]
Invalid expression [0:0]
compilation error, element 'div' [445:0]
Attribute 'data-plugin-options': Failed to compile the expression ''directionNav':false, 'animation':'slide'' in the AVT. [0:0]
Invalid expression [0:0]
compilation error, element 'div' [512:0]
Attribute 'data-plugin-options': Failed to compile the expression ''controlNav':false, 'slideshow': false, 'animationLoop': true, 'animation':'slide'' in the AVT. [0:0]

并打破渲染。

有没有办法让这项工作(除了将conf移到js之外)?

3 个答案:

答案 0 :(得分:1)

似乎唯一的解决方案 - 实际上是有意义的 - 是将参数拆分为多个data属性。像:

data-plugin-directionNav="false"
data-plugin-animation="slide"
data-plugin-slideshow="false"
data-plugin-maxVisibleItems="6"

答案 1 :(得分:0)

这些是TALES表达式。尝试以'string:'开头。你需要逃避'$'和​​';'如果你使用它们。

检查PyPI上的plone.app.theming页面;搜索“右侧是TALES表达式”的文档部分。

答案 2 :(得分:0)

必须对大括号进行转义,即{{}}否则xslt引擎将尝试在AVT中评估/编译expressin。

此外,属性值必须用双引号" ... "括起来,dict值用单引号' ... '括起来,如下所示:

attributename="{{xyz:'abc'}}"

这将转变为

attributename="{xyz:'abc'}"

请记住:当你加载没有diazo的html模板时(即直接来自你的文件系统),你一定不能逃避大括号。否则你的插件最终不会将其视为json-string。