2010-03-09 14 views
3

J'utilise Plone 3.1.7 dans un projet qui nécessite des ajustements de performance. L'une des modifications demande que CSS soit en haut de page et le JS devrait être en bas. Toutefois, les deux se trouvent àséparer JSS de CSS à plone.htmlhead

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

Dans le modèle principal. Comment puis-je les séparer?

Merci à l'avance

Répondre

3

Mes collègues ont trouvé la solution:

plone.htmlhead est un Viewlet enregistré par le plone.app.layout produit qui charge les trois autres viewlets:

  • plone.resourceregistries.styles
  • plon e.resourceregistries.scripts
  • plone.resourceregistries.kineticstylesheets

Je mets ce qui suit à la balise HEAD:

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

Et ce qui suit au fond:

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

Terminé ! les CSS seront situés en haut de la page et les JS en bas de la page

1

En général, vous ne pas le faire dans Plone, car il est mis en place pour déclencher la JS de manière asynchrone, donc il ne devrait pas bloquer tout rendu (ce qui est ce que la pointe de la performance est sur).

Si vous insérez les choses directement dans le modèle, les choses peuvent changer - mais la configuration par défaut ne la bonne chose, à moins que je suis malentendu la question ici (ce qui peut être le cas :)

+0

Hey, Limi! Merci beaucoup pour la réponse! Bien que JS se déclenche de manière asynchrone dans la configuration par défaut, selon les meilleures pratiques de Yahoo pour accélérer les sites Web, CSS devrait être en haut de la page et JS devrait être au bas de la page, et la configuration par défaut dans l'étiquette HEAD. J'ai trouvé une solution décrite ci-dessous. Merci encore, limi! – badchoosed

0

C'était un bug connu dans certaines versions récentes de Products.ResourceRegistries Ce problème est résolu dans la version 2.02b. Vous pouvez épingler cette version dans votre buildout:

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

puis exécutez re-buildout et cette question va.

0

La suggestion ci-dessus de remplacer plone.htmlhead split avec 3 viewlets n'a pas entièrement fonctionné pour moi, comme j'ai perdu le titre de la page (pas bon pour le référencement). Je suppose que le titre de la page est également normalement inclus par plone.htmlhead.

La meilleure solution semble être d'utiliser les plus récents produits.RessourcesRegistries suggérés ci-dessus, sauf que les lignes de buildout sont légèrement fausses.Ce qui suit a fonctionné pour moi:

[versions]

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

Dans la balise de tête en plus de

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

J'ai mis

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

. ...
mais en fait j'ai perdu tous les meta mots-clés en rapport avec les mots-clés!