Adding an class to body element with XDV

六眼飞鱼酱① 提交于 2019-12-01 06:51:52

问题


I want to style some forms in Plone3+collective.xdv but I don't want all forms to get the special style.

So I'd like to add a special styled-form class name to the class attribute of the body element just when displaying certain templates:

  • contact-info
  • sendto_form
  • PFG forms

So I thought that I could manage to perform this with XDV in order not to modify those templates.

By using the if-content directives in XDV rules I can check if those templates are being displayed:

css:if-content="body.template-contact-info"

for instance.

But I don't find the way to keep the class attribute as delivered by Plone and add the special class based on that condition.

My desired result would be something like:

<body class="template-contact-info styled-form">
    ...
</body>

Thanks in advance.


回答1:


With Diazo/plone.app.theming you can merge attributes from the template and content, see: http://diazo.org/basic.html#merge

If you can't upgrade then you'll need to do this with inline XSL, something like:

<prepend theme="/html/body" css:if-content="body.template-contact-info"><xsl:attribute name="class"><xsl:value-of select="/html/body/@class"/> styled-form</xsl:attribute></prepend>

Update: I forgot the tag in the example above. It should work now.



来源:https://stackoverflow.com/questions/6599993/adding-an-class-to-body-element-with-xdv

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!