(English version available on share.ez.no)
Je suis en train de mettre à jour le Planète eZ
Publish.fr à la dernière version d'eZ Publish
5. J'en profite pour passer en revue les problèmes ou les fonctionnalités
manquantes que j'avais recontrés lors de la mise en place de la version avec eZ
Publish 5 en décembre
dernier. L'un de
ces problèmes
concernait les différences entre les pages générées par les modules legacy
(ezinfo/about, planet/search, ...) et le reste du site. En effet, en 5.0, il
n'était pas possible d'utiliser un pagelayout Twig avec un module
legacy, et donc le résultat de ces modules
étaient toujours injectés dans le bon vieux pagealyout.tpl. À partir des n
2013.4
et 5.1, il est maintenant possible d'utiliser un pagelayout Twig avec les
modules legacy. Il s'agit d'une fonctionnalité intéressante dans l'optique d'une
mise à jour progressive vers la nouvelle stack, mais certains éléments autour de
cette fonctionnalités sont intéressants.
Pour commencer, la version initiale a été ajoutée par Joe Kepley via une pull request. Il mérite un grand bravo pour ça :-)
Ensuite, en travaillant sur une amélioration, j'ai ajouté la possibilité de
définir ce pagelayout par siteaccess ou groupe de
siteaccess. Il n'y a pas de configuration sémantique, donc pour configurer le
pagelayout à utiliser avec les modules legacy, il faut écrire la configuration
suivante dans ezpublish.yml :
parameters:
ezpublish_legacy.planete.module_default_layout: PlanetBundle::pagelayout.html.twig
Dans cet exemple, planete est le nom du siteaccess et la valeur est évidemment
le chemin vers le template.
Enfin, avec quelques changements, le même pagelayout peut être utilisé pour les
modules legacy comme pour le reste du site. Le principal changement et
potentiellement le seul à apporter concerne le block content pour qu'il tienne
compte de l'éxécution d'un module legacy. Une simple condition sur la variable
module_result permet de détecter le contexte :
<!DOCTYPE html>
<html lang="fr-FR">
<!-- ... -->
<body>
{% block content %}
{% if module_result %}
{# we are in a legacy rendered module #}
{{ module_result.content|raw }}
{% endif %}
{% endblock %}
</body>
</html>
Rien de compliqué, non ? Il s'agit là d'un des nombreux ponts entre eZ Publish legacy et la nouvelle stack eZ Publish 5. Vous voulez en apprendre plus ? Si j'étais vous, je m'inscrirais à la prochaine eZ UnConference #2. Sans conteste, le moyen le plus rapide de tout apprendre ou presque sur eZ Publish 5!
Mise à jour à 14h30: cette fonctionnalité est documentée avec un exemple utilisant l'héritage de template Twig.






