Question

I want to build a custom Plone theme with Diazo/plone.app.theming, following the instructions of Martin Aspeli in his Book "Professional Plone 4 Developement". Like in the book I choosed the way to pull in all Plone css (default Sunburst Theme). My problem: All these css are beeing included - except of the public.css. This means a broken edit bar and some other visual issues. The hack would be to copy the public.css into my resource directory and include it into my own cssregistry.xml. But I want to do it clean. Why is this single file not included (but the others be)? I reinstalled my theme multiple times to get sure, that all of my changes apply.

This is my cssregistry.xml:

<?xml version="1.0"?>
<object name="portal_css">
  <stylesheet id="++theme++myproject.theme/css/main.css"
              expression="request/HTTP_X_THEME_ENABLED | nothing"
              applyPrefix="True" />
</object>

Here the head-related parts of my rules.xml:

<?xml version="1.0" encoding="UTF-8"?>
<rules
    xmlns="http://namespaces.plone.org/diazo"
    xmlns:css="http://namespaces.plone.org/diazo/css"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <!-- Rules applying to standard Plone pages -->
    <rules css:if-content="#visual-portal-wrapper">
        <theme href="index.html" />

        <drop theme="/html/head/meta" />
        <drop theme="/html/head/title" />
        <drop theme="/html/head/base" />
        <drop theme="/html/head/style" />
        <drop theme="/html/head/script" />
        <drop theme="/html/head/link" />
        <drop theme="/html/head/comment()" />

        <after content="/html/head/meta"
               theme-children="/html/head" />
        <after content="/html/head/title"
               theme-children="/html/head" />
        <after content="/html/head/base | /html/head/style | /html/head/script | /html/head/link | /html/head/comment()"
               theme-children="/html/head" />
...

That's, how the generated HTML markup of the head-tag looks with my theme enabled:

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta content="Herzlichen Glückwunsch! Sie haben das professionelle Open-Source Content-Management-System Plone erfolgreich installiert." name="description" />
  <meta name="viewport" content="width=device-width, initial-scale=0.6666, maximum-scale=1.0, minimum-scale=0.6666" />
  <meta name="generator" content="Plone - http://plone.org" />
  <title>
  Willkommen bei Plone — My-Project</title>
  <base href="http://localhost:8080/my-project/front-page" />
  <!--[if lt IE 7]> </base> <![endif]-->
  <link rel="alternate" data-kss-base-url="kss-base-url" href="http://localhost:8080/my-project/front-page/" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/member.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/base.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/collective.js.jqueryui.custom.min.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/columns.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/authoring.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/portlets.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/controlpanel.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/deprecated.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/navtree.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/invisibles.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/forms.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/++resource++plone.app.discussion.stylesheets/discussion.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/ploneKss.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/++resource++tinymce.stylesheets/tinymce.css" />
  <link rel="stylesheet" type="text/css" media="print" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/print.css" />
  <link rel="stylesheet" type="text/css" media="handheld, screen and (max-device-width: 480px)" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/mobile.css" />
  <!--[if lt IE 8]> <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/IEFixes.css" /> <![endif]-->
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/++theme++myproject.theme/css/sunburst.css" />
  <link rel="stylesheet" type="text/css" media="screen" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/++theme++myproject.theme/css/main.css" />
  <link rel="stylesheet" type="text/css" media="all" href="http://localhost:8080/my-project/portal_css/Sunburst%20Theme/ploneCustom.css" />
  <link rel="stylesheet" data-rel="kinetic-stylesheet" type="text/kss" href="http://localhost:8080/my-project/portal_kss/Sunburst%20Theme/++resource++tinymce.kss/tinymce.kss" />
  <link rel="stylesheet" data-rel="kinetic-stylesheet" type="text/kss" href="http://localhost:8080/my-project/portal_kss/Sunburst%20Theme/at.kss" />
  <link rel="stylesheet" data-rel="kinetic-stylesheet" type="text/kss" href="http://localhost:8080/my-project/portal_kss/Sunburst%20Theme/plone.kss" />
  <link rel="stylesheet" data-rel="kinetic-stylesheet" type="text/kss" href="http://localhost:8080/my-project/portal_kss/Sunburst%20Theme/++resource++plone.app.form.kss" />
  <link rel="stylesheet" data-rel="kinetic-stylesheet" type="text/kss" href="http://localhost:8080/my-project/portal_kss/Sunburst%20Theme/++resource++plone.app.z3cform" />
  <link rel="stylesheet" data-rel="kinetic-stylesheet" type="text/kss" href="http://localhost:8080/my-project/portal_kss/Sunburst%20Theme/ploneformgen.kss" />
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++plone.app.jquery.js"></script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/jquery-integration.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++plone.app.jquerytools.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++plone.app.jquerytools.overlayhelpers.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++plone.app.jquerytools.form.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/register_function.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/plone_javascript_variables.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/nodeutilities.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/cookie_functions.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/modernizr.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/livesearch.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++search.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/select_all.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/dragdropreorder.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/collapsiblesections.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/form_tabbing.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/popupforms.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/jquery.highlightsearchterms.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/first_input_focus.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/accessibility.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/styleswitcher.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/toc.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/collapsibleformfields.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++plone.app.discussion.javascripts/comments.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/dropdown.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/sarissa.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/table_sorter.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/calendar_formfield.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/formUnload.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/formsubmithelpers.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/unlockOnFormUnload.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/tiny_mce.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++kukit.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/tiny_mce_init.js"> </script>
  <script type="text/javascript" src="http://localhost:8080/my-project/portal_javascripts/Sunburst%20Theme/collective.js.jqueryui.custom.min.js"> </script>
  <link rel="author" href="http://localhost:8080/my-project/author/admin" title="Autoreninformation" />
  <link rel="shortcut icon" type="image/x-icon" href="http://localhost:8080/my-project/favicon.ico" />
  <link rel="apple-touch-icon" href="http://localhost:8080/my-project/touch_icon.png" />
  <script type="text/javascript">

        jQuery(function($){
            $.datepicker.setDefaults(
                jQuery.extend($.datepicker.regional['de'],
                {dateFormat: 'dd.mm.yy'}));
        });
        </script>
  <link rel="search" href="http://localhost:8080/my-project/@@search" title="Website durchsuchen" />
</head>

And here with my theme disabled:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <base href="http://127.0.0.1:8080/my-project/front-page" /><!--[if lt IE 7]></base><![endif]-->
    <meta content="Herzlichen Glückwunsch! Sie haben das professionelle Open-Source Content-Management-System Plone erfolgreich installiert." name="description" />
    <link rel="alternate" data-kss-base-url="kss-base-url" href="http://127.0.0.1:8080/my-project/front-page/" />

    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/member.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/base.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/public.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/collective.js.jqueryui.custom.min.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/columns.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/authoring.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/portlets.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/controlpanel.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/deprecated.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/navtree.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/invisibles.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/forms.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/++resource++plone.app.discussion.stylesheets/discussion.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/ploneKss.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/++resource++tinymce.stylesheets/tinymce.css" />
    <link rel="stylesheet" type="text/css" media="print" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/print.css" />
    <link rel="stylesheet" type="text/css" media="handheld, screen and (max-device-width: 480px)" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/mobile.css" />
    <!--[if lt IE 8]>    <link rel="stylesheet" type="text/css" media="screen" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/IEFixes.css" /> <![endif]-->

    <link rel="stylesheet" type="text/css" media="all" href="http://127.0.0.1:8080/my-project/portal_css/Sunburst%20Theme/ploneCustom.css" />
    <link rel="stylesheet" data-rel="kinetic-stylesheet" type="text/kss" href="http://127.0.0.1:8080/my-project/portal_kss/Sunburst%20Theme/++resource++tinymce.kss/tinymce.kss" />
    <link rel="stylesheet" data-rel="kinetic-stylesheet" type="text/kss" href="http://127.0.0.1:8080/my-project/portal_kss/Sunburst%20Theme/at.kss" />
    <link rel="stylesheet" data-rel="kinetic-stylesheet" type="text/kss" href="http://127.0.0.1:8080/my-project/portal_kss/Sunburst%20Theme/plone.kss" />
    <link rel="stylesheet" data-rel="kinetic-stylesheet" type="text/kss" href="http://127.0.0.1:8080/my-project/portal_kss/Sunburst%20Theme/++resource++plone.app.form.kss" />
    <link rel="stylesheet" data-rel="kinetic-stylesheet" type="text/kss" href="http://127.0.0.1:8080/my-project/portal_kss/Sunburst%20Theme/++resource++plone.app.z3cform" />
    <link rel="stylesheet" data-rel="kinetic-stylesheet" type="text/kss" href="http://127.0.0.1:8080/my-project/portal_kss/Sunburst%20Theme/ploneformgen.kss" />

    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++plone.app.jquery.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/jquery-integration.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++plone.app.jquerytools.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++plone.app.jquerytools.overlayhelpers.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++plone.app.jquerytools.form.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/register_function.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/plone_javascript_variables.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/nodeutilities.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/cookie_functions.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/modernizr.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/livesearch.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++search.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/select_all.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/dragdropreorder.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/collapsiblesections.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/form_tabbing.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/popupforms.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/jquery.highlightsearchterms.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/first_input_focus.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/accessibility.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/styleswitcher.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/toc.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/collapsibleformfields.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++plone.app.discussion.javascripts/comments.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/dropdown.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/sarissa.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/table_sorter.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/calendar_formfield.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/formUnload.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/formsubmithelpers.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/unlockOnFormUnload.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/tiny_mce.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/++resource++kukit.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/tiny_mce_init.js"></script>
    <script type="text/javascript" src="http://127.0.0.1:8080/my-project/portal_javascripts/Sunburst%20Theme/collective.js.jqueryui.custom.min.js"></script>

    <title>Willkommen bei Plone &mdash; My-Project</title>
    <link rel="author" href="http://127.0.0.1:8080/my-project/author/admin" title="Autoreninformation" />
    <link rel="shortcut icon" type="image/x-icon" href="http://127.0.0.1:8080/my-project/favicon.ico" />
    <link rel="apple-touch-icon" href="http://127.0.0.1:8080/my-project/touch_icon.png" />
    <script type="text/javascript">
        jQuery(function($){
            $.datepicker.setDefaults(
                jQuery.extend($.datepicker.regional['de'],
                {dateFormat: 'dd.mm.yy'}));
        });
    </script>
    <link rel="search" href="http://127.0.0.1:8080/my-project/@@search" title="Website durchsuchen" />
    <meta name="viewport" content="width=device-width, initial-scale=0.6666, maximum-scale=1.0, minimum-scale=0.6666" />
    <meta name="generator" content="Plone - http://plone.org" />
</head>

The obvious difference is the missing link tag to public.css in the first block. Why? Any suggestions, where I have to look to find the source of this error?

Was it helpful?

Solution

Page 158 of Martin's book includes:

If we wanted to selectively turn off some Plone stylesheets when the theme is in effect, we could have added a tag such as:

<stylesheet id="public.css"
    expression="not:request/HTTP_X_THEME_ENABLED | nothing"
    />

Perhaps you used that code in your experiments and the setting remains in your database? In the ZMI, go to the portal_css tool and make sure that the condition field is empty for public.css.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top