[spip-dev] Commentaires conditionnels dans structure.html de Z

Bonjour,

J'essaye d'appliquer les bonnes pratiques d'intégration recommandés dans boilerplate à un site fait en SPIP+Z, en particulier en ajoutant des classes conditionnelles pour IE (oui, encore lui) sur la balise body, ou plutôt html.

J'ai donc copié ce fichier structure.html :
http://zone.spip.org/trac/spip-zone/browser/tags/zpip-1.7.12/structure.html
qui est modifié ainsi à cause de la syntaxe à crochets des commentaires conditionnels qui vient casser les crochets-parenthèses de SPIP, mais je me demande comment mieux faire :

<?php if (!_request('var_zajax')) { ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Cf.: http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7 ]> <html dir="#LANG_DIR" lang="#LANG" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" class="[(#LANG_DIR)][ (#LANG)] no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html dir="#LANG_DIR" lang="#LANG" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" class="[(#LANG_DIR)][ (#LANG)] no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html dir="#LANG_DIR" lang="#LANG" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" class="[(#LANG_DIR)][ (#LANG)] no-js ie8"> <![endif]-->
<!--[if IE 9 ]> <html dir="#LANG_DIR" lang="#LANG" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" class="[(#LANG_DIR)][ (#LANG)] no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html dir="#LANG_DIR" lang="#LANG" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" class="[(#LANG_DIR)][ (#LANG)] no-js"> <!--<![endif]-->
<head>
<INCLURE{fond=head/#ENV{type},env}>
<INCLURE{fond=inclure/head}>
</head>
<body class="page_#ENV{type,page}[ #ENV{type,page}_(#ENV{composition,''})]">
<INCLURE{fond=body,env}>
#SPIP_CRON
</body>
</html>
<?php } else { ?>
<INCLURE{fond=#VAL{var_zajax}|_request|concat{'/',#ENV{type}},env}>
<?php } ?>

C'est pas top mal d'utiliser du php de la sorte ? Pour éviter ça, ne vaut-il pas mieux déporter la balise html et ses commentaires conditionnels dans un inclure, pour maintenir les crochets-parenthèses de SPIP ?

* romy@rezo.net tapuscrivait, le 18/05/2011 12:40:

Bonjour,

J'essaye d'appliquer les bonnes pratiques d'intégration recommandés dans
boilerplate à un site fait en SPIP+Z, en particulier en ajoutant des
classes conditionnelles pour IE (oui, encore lui) sur la balise body, ou
plutôt html.

J'ai donc copié ce fichier structure.html :
Connexion · GitLab
qui est modifié ainsi à cause de la syntaxe à crochets des commentaires
conditionnels qui vient casser les crochets-parenthèses de SPIP, mais je
me demande comment mieux faire :

Pour mettre des [ et ] dans le résultat, il faut ruser :
[ : #EVAL{chr(91)}
] : #EVAL{chr(93)}

Et comme ça, pas besoin de php.

-- RealET

L'utilisation du PHP à cet endroit ne pose pas de problème de mise en cache ici.
Par contre, ce qui gêne, c'est que sur une requete var_zajax=contenu, toute la page est calculee une fois dans la premiere partie du if,
et le contenu tout seul est calculé une seconde fois dans la seconde partie.
On perd donc l'intérêt en perf du var_zajax.

Dans z-core de SPIP 3, j'ai découpé ce squelette en deux, mais ça nécessite de modifier le pipeline styliser.
Pour rester compatible tu peux (dans l'ordre du plus performant au moins performant)
- modifier l'ecriture des [ et ] des commentaires conditionnels comme indiqué par RealET dans son mail, avec des #EVAL{}. C'est lourd mais ça résoudra le problème des crochets et tu pourras remettre le test initial sur var_zajax
- laisser le if PHP juste autour du pavé de commentaire conditionnel, et remettre les cochets SPIP sur le reste du squelette
- découper en deux squelettes et faire des inclusions conditionnées par les crochets SPIP

Cédric

Personnellement, j'ai mis cette partie dans un "inclure/balise-html.html"

Alors pour le coup, avec un #INCLURE et sans {env}, et un #CACHE très long sur cette inclusion,
ce qui permet de minimiser l'impact

Cédric

Oui, pas de {env}, mais j’avoue avoir laissé le cache par défaut, pas si grave, mais effectivement je peux mieux faire.

2011/5/18 cedric.morin@yterium.com <cedric.morin@yterium.com>