使用if-not路径并动态修改样式plone.app.theming

时间:2012-03-04 17:40:51

标签: plone diazo

我正在尝试使用plone.app.theming(重氮)动态更改每个页面上的样式,但Plone的首页

到目前为止,我拼凑了这个,但它打破了我的主题:

<replace css:content="#some-div" if-path="not(body.section-front-page)"
<style type="text/css">
#some-div { margin: 0 2.25em }
</style>
</replace>

任何关于如何编写组合if-not路径和动态修改样式的帮助都将不胜感激! 添加了缺少的结束标记,仍然无效。

3 个答案:

答案 0 :(得分:3)

对我来说,看起来你的rules.xml文件中有几个错误。

a)替换需要内容和主题属性。 见http://docs.diazo.org/en/latest/basic.html#replace

b)您通常不会将css放入rules.xml文件中。以及上面插入的方式不起作用

c)if-path条件适用于url的部分内容。而你正在测试身体的某一类。 你宁愿选择其中一个

if-path="/front-page" 
if-content="body.section-front-page"

(见http://docs.diazo.org/en/latest/advanced.html#conditions-based-on-paths

最好的起点是浏览文档 http://pypi.python.org/pypi/plone.app.theming

下载plone.org上的一个重氮主题作为模板 http://plone.org/products?getCategories=themes&getCompatibility=Plone+4.1&SearchableText=diazo

并在http://docs.diazo.org

上查找不同的规则

答案 1 :(得分:1)

我不认为Diazo是解决此问题的正确工具,请尝试以下CSS:

#some-div { margin: 0 2.25em }
body.section-front-page #some-div { margin: 0 }

Plone的css课程的优点在于,它允许您为整个网站编写单个CSS文件,同时仍然针对特定部分的规则。

答案 2 :(得分:0)

假设您的首页是带有“首页”ID的文档,那么您可以这样做:

<?xml version="1.0" encoding="UTF-8"?>
<rules
    xmlns="http://namespaces.plone.org/diazo"
    xmlns:css="http://namespaces.plone.org/diazo/css">

  <rules css:if-content="body.section-front-page.template-document_view)">
  <!-- here you put rules for the front page only -->
  </rules>

  <rules css:if-content="body:not(.section-front-page.template-document_view)">
    <after css:content-children="head">
      <style>
      #some-div { margin: 0 2.25em; }
      </style>
    </after>
  </rules>

</rules>

指定.template-document_view可帮助您不要在家中使用@@ manage-portlets屏幕进行加密。