Вопрос

Я использую Plone 3.1.7 в проекте, который требует настройки производительности.Одна из настроек требует, чтобы CSS находился вверху страницы, а JS — внизу.Однако оба расположены по адресу

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

В файле main_template.Как мне разделить эти?

заранее спасибо

Это было полезно?

Решение

Мои коллеги по работе нашли решение:

plone.htmlhead — это вьюлет, зарегистрированный продуктом plone.app.layout, который загружает три других вьюлета:

  • 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 — внизу страницы.

Другие советы

Обычно вам не нужно делать это в Plone, поскольку он настроен на асинхронный запуск JS, поэтому он не должен блокировать какой-либо рендеринг (именно об этом и совет по производительности).

Если вы вставляете что-то непосредственно в шаблон, все может измениться, но настройка по умолчанию работает правильно, если только я не неправильно понимаю вопрос (что может быть так :)

Это известная ошибка в некоторых последних версиях Products.ResourceRegistries. Эта проблема исправлена ​​в версии 2.02b.Вы можете закрепить эту версию в своей сборке:

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

затем повторно запустите сборку, и эта проблема исчезнет.

Предложение выше заменить разделение plone.htmlhead на 3 представления мне не совсем помогло, так как я потерял заголовок страницы (нехорошо для SEO).Я предполагаю, что заголовок страницы также обычно включается в plone.htmlhead.

Лучшим решением, по-видимому, является использование более нового Products.ResourceRegistries, предложенного выше, за исключением того, что строки сборки немного неверны.У меня сработало следующее:

[версии]

...
Products.ResourceRegistries=2.0b3
...

В теге head помимо

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

....
но на самом деле я потерял все мета теги, связанные с ключевыми словами!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top