Plone 使用diazo和notheme将类添加到body标记

Plone 使用diazo和notheme将类添加到body标记,plone,diazo,Plone,Diazo,我正在使用 plone/document?ajax\u load=True&ajax\u include\u head=True作为iframe的src 在开发模式中,追加&diazo.off=1完成了这项任务。 遗憾的是,在生产服务器上,这不起作用,所以我添加了 ajax\u加载参数,如 我将所有指令包装在元素中,以确保它们未被应用(请参见下面的代码) 现在,我需要用特定的类标记iframed页面的主体,以应用不同的样式(例如,覆盖中的主体没有背景色) 建议的解决方案只有在使用主题和具有类属性

我正在使用
plone/document?ajax\u load=True&ajax\u include\u head=True
作为iframe的src

在开发模式中,追加
&diazo.off=1
完成了这项任务。 遗憾的是,在生产服务器上,这不起作用,所以我添加了 ajax\u加载参数,如

我将所有指令包装在
元素中,以确保它们未被应用(请参见下面的代码)

现在,我需要用特定的类标记iframed页面的主体,以应用不同的样式(例如,覆盖中的主体没有背景色)

建议的解决方案只有在使用主题和具有类属性的body元素时才起作用

有没有一种方法可以在没有主题的情况下向内容中添加类(使用)? 或者我必须提供一个空的html文档(index2.html)作为主题,并应用大量规则在css/js等上复制两次

<rules if="$ajax_load">

    <!-- theme href="index.html" /-->

    <notheme />


    <!-- only works when using a theme -->
    <before theme-children="/html/body"><xsl:attribute name="class"><xsl:value-of select="/html/body/@class"/> my class</xsl:attribute></before>


    <!-- thought this could to the trick but does not work at all -->
    <xsl:template match="html/body">
    <xsl:attribute name="class"> foo</xsl:attribute>
    </xsl:template>


</rules>

<rules if-not="$ajax_load">


    <theme href="index.html" />

    <replace content="/html/head/title" theme="/html/head/title" />
    ...

我的班级
福
...

如果您对覆盖图使用plone.app.jquerytools,则可以传递一个类参数:

$('a.myPopover').prepOverlay({
    subtype: 'iframe',
    cssclass: 'my-popover'
});
在我们使用plone.app.tiles的一些项目中,我们为覆盖层使用了一个特定的主题模板,该模板去掉了所有不必要的部分,并简化为一个包装div,并将其用于tile edit视图,如下所示:

<theme href="minimal.html" if-path="@@edit-tile" />

显然,如果没有可操作的主题,任何引用主题的规则都不能与
一起使用。但是,您可以使用
内容(我对如何实现
内容有一些想法,但很难实现。可能在将来的Diazo版本中)。但是,您可以使用少量xslt实现同样的功能:

<replace content="/html/body/@class">
    <xsl:attribute name="class"><xsl:value-of select="."/> newclass</xsl:attribute>
</replace>

新阶级

谢谢克里斯托夫。css类应用于保存覆盖的div,因此它无助于在iframe覆盖中设置主体的样式。感谢laurence的澄清。我不知道你提出的解决方案前后都需要一个主题(diazo及其文档隐藏了这些实现细节),但实际上内容体的css类没有被复制。结果body元素上的唯一类是newclass。请尝试使用
而不是