Unstyle все всплывающее окно с темой диазо - PullRequest
3 голосов
/ 08 февраля 2012

Я использую diazo для тематики, и у меня проблема со всеми всплывающими окнами.Я использую Plone 4.1.3.

Я много читал, что для предотвращения появления всплывающих окон нужно включить это правило:

<theme href="index.html" css:if-content="#visual-portal-wrapper" />

Это уже так.Может быть, это правило работает для некоторых всплывающих окон, но не для login_form, не для select_default_page и не для contact-info.

Почему?Просто потому, что во всех этих 3 шаблонах есть # visual-portal-wrapper.

Итак, я попробовал с такими правилами:

<notheme if-path="select_default_page" />
<notheme if-path="contact-info" />
<notheme if-path="login" />

Но это не очень эффективно, еслиЯ забыл один шаблон в этом правиле, мне нужно добавить его, и если кто-то зайдет в / contact-info (без всплывающего окна), то страница не будет стилизована (конечно, но это не хорошо ...).

Я пытался посмотреть сбоку URL, я увидел, что есть строка запроса "ajax_load", но ее нет в контактной информации.

Я также пытался посмотреть наHTML-код, добавленный в main_template, класс "pb_ajax", но это тоже не сработало ...

Итак, есть ли способ идентифицировать шаблон во всплывающем окне?

Редактировать:

Вот шаблон: http://pastealacon.com/29662

и вот правило.xml: http://pastealacon.com/29663

1 Ответ

3 голосов
/ 08 февраля 2012

Вы должны убедиться, что ваш шаблон включает тег div id = "content".

Когда всплывающие окна загружаются через AJAX, используется фильтр, который удаляет все, что не нужно для всплывающего окна (весь хром дизайна). Этот фильтр, определенный в popupforms.js:

var common_content_filter = '#content>*:not(div.configlet),dl.portalMessage.error,dl.portalMessage.info';

Ключевой частью здесь является "#content> *". Это означает, что мы отфильтровываем все, кроме того, что находится внутри id = "content" div. Но если этот div отсутствует, совпадения не будет, и all возвращенный html появится во всплывающем окне. Беспорядок.

...