Rendu des contenus en dehors des pages


Cette page ne doit être appliquée que si le script vous demande de passer la migration manuelle code.20240103.Web-ContentRendering

Cette migration n'est pas forcément obligatoire. Elle ne l'est que si dans le back-office, l'ouverture d'un contenu depuis le moteur de recherche BO fait une erreur 500. Elle est cependant conseillée.

Pour le rendu des contenus en dehors des pages, accessible lorsqu'on ouvre un contenu depuis le moteur de recherche par exemple, la XSL stylesheets/content/_wrapper/content.xsl permet de charter le rendu du contenu.

Suite à une réorganisation des rendus dit "wrappés", il est possible que le rendu de vos contenus ne fonctionne plus: erreur 500 avec très certainement l'erreur suivante:

Caused by: javax.xml.transform.TransformerException: Impossible de trouver la variable portant le nom absolute-uri-prefix
    at org.apache.xpath.operations.Variable.fixupVariables(Variable.java:146)

Pour corriger le problème, votre XSL doit importer la XSL des contenus wrappés du Web.
Un exemple d'imports corrects dans votre XSL est :

<xsl:import href="skin://stylesheets/main.xsl"/>
<xsl:import href="workspace:web://stylesheets/content/_wrapper/content.xsl"/>
<xsl:import href="plugin:cms://stylesheets/helper/html-hierarchy.xsl"/>

L'ajout de l'import devrait suffire à corriger les problèmes.

L'import <xsl:import href="workspace:web://stylesheets/template-default.xsl"/> devient inutile puisque déjà importé par la XSL du web.

La déclaration des paramètres ci-après deviennent également inutiles, puisque que déjà déclarés dans la XSL du web, ils peuvent être supprimés si présents dans votre XSL:

<xsl:param name="lang"/>
<xsl:param name="skin"/>
<xsl:param name="site"/>
<xsl:param name="cms-context"/>
<xsl:param name="contextPath"/>
<xsl:param name="template">page</xsl:param>
<xsl:param name="rendering-context" select="ametys:renderingContext()"/>

Il est conseillé également de revoir la surcharge en surchargeant les template "head" et "body" plutôt que de surcharger le template <xsl:template match="/"> si c'est votre cas.

Retour en haut