Использование путей if-not и динамическое изменение стилей вместе plone.app.theming - PullRequest
2 голосов
/ 04 марта 2012

Я пытаюсь динамически изменить стиль на каждой странице , но на первой странице Plone используется plone.app.theming (diazo).

Пока я собрал это, но это нарушает мою тему:

<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 ]

3 голосов
/ 05 марта 2012

для меня похоже, что в вашем файле rules.xml есть несколько ошибок.

а) замена требует содержимого и атрибута темы. см http://docs.diazo.org/en/latest/basic.html#replace

б) вы обычно не помещаете css в ваш файл rules.xml. и способ, которым он вставлен выше, не будет работать

в) условие 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 голос
/ 05 марта 2012

Я не думаю, что Diazo является подходящим инструментом для решения этой проблемы, попробуйте следующий CSS:

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

Приятная вещь в классах css секции Plone состоит в том, что она позволяет вам написать один CSSфайл для всего сайта, сохраняя при этом правила для определенных разделов.

0 голосов
/ 08 июня 2012

Допустим, ваша первая страница - это Документ с идентификатором 'front-page', тогда вы можете сделать:

<?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 дома.

...