自定义Plone主题与Plone.app.theming基于Sunburst-缺少public.css



我想按照Martin Aspeli在《专业Plone 4开发》一书中的说明,用Diazo/Plone.app.theming构建一个自定义的Plone主题。就像在书中一样,我选择了拉入所有Plone css(默认的Sunburst主题)的方式。我的问题是:除了public.css,所有这些css都被包括在内。这意味着编辑栏坏了,还有一些其他视觉问题。破解方法是将public.css复制到我的资源目录中,并将其包含在我自己的cssregistry.xml中。但我想把它清理干净。为什么这一个文件不包括在内(但其他文件包括在内)?我多次重新安装我的主题,以确保我的所有更改都适用。

这是我的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>

这里是我的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" />
...

也就是说,在启用了我的主题的情况下,head标记的生成HTML标记看起来是什么样子的:

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

这里禁用了我的主题:

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

明显的区别是第一个块中缺少public.css的链接标记。为什么?有什么建议吗?我必须在哪里找到这个错误的来源?

马丁的书第158页包括:

如果我们想在主题生效时,我们可以添加一个标签,例如:

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

也许你在实验中使用了该代码,而设置仍保留在数据库中?在ZMI中,转到portal_css工具,并确保public.css的条件字段为空。

最新更新