3

我在需要性能调整的项目中使用 Plone 3.1.7。其中一项调整要求 CSS 应位于页面顶部,而 JS 应位于底部。然而两者都位于

<div tal:replace="structure provider:plone.htmlhead" />

在 main_template 中。我如何拆分这些?

提前致谢

4

5 回答 5

3

我的同事找到了解决方案:

plone.htmlhead 是一个由产品 plone.app.layout 注册的 viewlet,它会加载其他三个 viewlet:

  • plone.resourceregistries.styles
  • plone.resourceregistries.scripts
  • plone.resourceregistries.kineticstylesheets

我将以下内容放在 HEAD 标签中:

<div tal:replace="structure provider:plone.resourceregistries.styles" />

底部有以下内容:

<div tal:replace="structure provider:plone.resourceregistries.scripts" />
<div tal:replace="structure provider:plone.resourceregistries.kineticstylesheets" />

完毕!CSS 将位于页面顶部,JS 位于页面底部

于 2010-03-11T13:22:47.397 回答
1

您通常不必在 Plone 中执行此操作,因为它设置为异步触发 JS,因此它不应该阻止任何渲染(这是性能提示的内容)。

如果您直接在模板中插入内容,事情可能会改变 - 但默认设置会做正确的事情,除非我在这里误解了问题(可能是这种情况:)

于 2010-03-10T23:18:17.220 回答
0

这是最新版本的 Products.ResourceRegistries 中的一个已知错误。此问题已在 2.02b 版本中修复。您可以将该版本固定在您的构建中:

[versions]
    ...
    Products.ResourceRegistries == 2.02b
    ...

然后,重新运行 buildout,这个问题就消失了。

于 2010-03-17T05:39:57.423 回答
0

上面用 3 个 viewlet 替换 plone.htmlhead 拆分的建议对我来说并不完全有效,因为我丢失了页面标题(对 SEO 不利)。我假设页面标题通常也包含在 plone.htmlhead 中。

更好的解决方案似乎是使用上面建议的较新的 Products.ResourceRegistries ,除了构建行略有错误。以下对我有用:

[版本]

...
Products.ResourceRegistries=2.0b3
...
于 2010-06-02T12:59:41.953 回答
0

在头部标签中除了

<div tal:replace="structure provider:plone.resourceregistries.styles" />

我放了

<title tal:define="page_title python: context_state.object_title()"
       tal:content="page_title">page title</title>

....
但实际上我已经丢失了所有与关键字相关的标记!

于 2011-07-29T15:38:08.060 回答