You are not logged in.
Bonjour,J'ai créé actuellement deux rendus différents pour les remontées de contenus de type liste. J'aimerais les regrouper en un seul modèle, qui gère automatiquement l'affichage de ces contenus en fonction d'étiquettes. Mais dans mon template XSL, comment faire le test qui correspond à cette valeur ?J'ai essayé un peu tout : <xsl:if test=
Offline
Quelle version d'Ametys utilisez-vous ?
Il existe sur le AmetysXSLTHelper une méthode qui renvoie les étiquettes d'un contenu (). Cela vous permet en XSLT d'avoir toutes les étiquettes d'un contenu dont vous avez l'identifiant.
Par contre je ne sais pas à partir de quelle version d'Ametys il est disponible.
Ps: votre message a été coupé je pense...
Raphael Franchet
Expert Ametys
Offline
La version 3.5. J'ai l'id de la page, je veux juste savoir si elle possède l'une ou l'autre étiquette. Est-ce qu'un <xsl:if test="html/head/meta[@tags = 'montag']/@content"> de ce genre peut fonctionner ? Comment l'écrire ?
Offline
Ok, ce dont je parlais permet de récupérer les étiquettes d'un contenu, ce n'est pas ce qu'il vous faut.
Vous êtes dans le rendu d'un service et voulez les étiquettes de la page qui porte le service.
Comme le montre ce schéma, () contrairement au template vous n'avez accès qu'aux données du services.
A ma connaissance, ce service ne saxe par les étiquettes de la page.
Par contre, comme dans toutes vos XSLs vous avez accès au AmetysXSLTHelper (encore lui!)
La méthode sitemap() permet de renvoyer un plan de site, notamment sur une page particulière. Par exemple la page courante Et ce plan du site inclut les étiquettes portées par les pages.
Lisez bien la doc ci-dessous jusqu'au bout
le code que vous utiliserez ressemblera à celui dans la partie "/!\ Performances"
à savoir
<xsl:variable name="currentPage" select="ametys:sitemap(ametys:pageId())"/>
Raphael Franchet
Expert Ametys
Offline
Oui, mais le service en question est une remontée de contenu, donc je voudrais tester les étiquettes des contenus qui sont remontées. Est-ce que <xsl:variable name="currentPage" select="ametys:sitemap(ametys:pageId())"/>
puis <xsl:if test="currentPage/tags/montag"> serait correct ? Sachant que je veux les étiquettes du contenu, pas de la page ?
Offline
Et bien non, car là vous aurez les étiquettes de la page (à noter qu'il vous manque un $ devant le nom de la variable).
Si vous voulez les étiquettes de chaque contenu, revenez au helper que je vous décris plus haut.
Attention cependant, est-ce que vous ne souhaitez pas plutot intervenir au niveau du rendu de chaque content ?
Quand vous êtes dans la remontée de contenus, chaque contenu est déjà rendu (selon la vue choisie en paramètre) et vous ne pouvez que les assembler. Donc si vous souhaiter faire apparaitre les étiquettes autour du code html des contenus, c'est bon, faites ça dans la XSL de la remontée de contenu.
Raphael Franchet
Expert Ametys
Offline
La fonction contentTags() semble correspondre à ce dont nous aurions besoin, mais je ne comprends pas comment l'utiliser.
Offline
ah oui... la réponse est que vous ne pouvez pas
cette méthode ne fonctionne qu'au moment du rendu d'un contenu.
il manque son équivalent avec l'id du contenu en paramètre (comme il peut exister sur contentAttachments juste au-dessus) : je vous invite à ouvrir un ticket dans le jira (en anglais)
mais en attendant j'ai trouvé plus simple comme quoi
si vous avez une skin qui a été créé sur le modèle de la 3.3 et supérieure (donc pas une skin 3.2 migrée), tous les contenus renvoient des <meta> avec les tags.
Par exemple un contenu étiquetté "Conférences" sur la démo renvoie ceci dans le rendu du contenu html/head
<meta content="Conférences" name="tags/CONFERENCES"/>
Raphael Franchet
Expert Ametys
Offline
J'ai essayé ceci : <xsl:if test="tags/montag">, sans succès dans la boucle <xsl:template match="content">. Comment tester la valeur ?
Offline
non, en effet votre test est loin de la réalite
c'est plutôt quelque chose du genre <xsl:if test="html/head/meta[@name='tags/montag']">
mais je n'ai pas le XML d'entrée complet sous les yeux pour vous confirmer ça
(pour l'obtenir, vous pouvez faire temporairement quelque chose du genre <test><xsl:copy-of select="."/></test> puis regarder le code source de la page générée : dans la balise <test> vous trouverez le XML d'entrée de votre XSL)
Raphael Franchet
Expert Ametys
Offline
merci pour votre réponse, ca fonctionne désormais (c'est exactement la fonction que vous décrivez, il faut en plus écrire le nom du tag en majuscule)
Offline
Bonjour
je suis dans le même cas, j'ai créé un contenu et dans son rendu nomducontenu-main.xsl j'aimerai n'afficher certains champs que si le contenu est étiqueté ACTU
Du coup j'ai essayé de reprendre ce qui était proposé mais sans succès.
<xsl:if test="html/head/meta[@name='tags/ACTU']">...</xsl:if>
<xsl:if test="not(html/head/meta[@name='tags/ACTU'])">...</xsl:if>
HELP ME ! Please
Last edited by Jbuard (03/03/2015 16:25:11)
Offline
Bonjour,
quelle version d'Ametys utilisez-vous ?
avez-vous essayé la technique du <xsl:copy-of/> que je décris plus haut ?
Raphael Franchet
Expert Ametys
Offline
Je suis en 3.5 !
Oui, j'ai bien fait le <xsl:copy-of/> :
<head><title>Le tourisme domestique Indonésien</title><meta content="Le tourisme domestique Indonésien" name="DC.title"/><meta content="2015-02-27" name="DC.date"/><meta content="Text" name="DC.type"/><meta content="text/html" name="DC.format"/><meta content="defaultWebContent://255919a5-0677-4263-98b8-9623ceb215f4" name="DC.identifier"/><meta content="fr" name="DC.language"/><meta content="fr" name="DC.coverage"/><link href="/preview/plugins/cms/dublincore/content.rdf?contentId=defaultWebContent://255919a5-0677-4263-98b8-9623ceb215f4" rel="meta"/><meta content="true" name="THESE"/><meta content="Le tourisme domestique Indonésien" name="title"/><meta content="Entre transfert et innovation, vers un nouveau modèle ?" name="stitre"/>
<meta content="2015-02-27T11:47:36.123+01:00" name="lastModificationRaw"/><meta content="sgiffon" name="lastContributor"/><meta content="2015-02-27T11:47:38.342+01:00" name="lastValidatedAtRaw"/><meta content="GENERIQUE" name="tags/ACTU;parent"/><meta content="Actualités" name="tags/ACTU"/><meta content="REMONTEES_VERS_AUTRE_SITE" name="tags/UMR_ESO;parent"/><meta content="UMR Eso" name="tags/UMR_ESO"/><meta content="GENERIQUE" name="tags/EN_COURS;parent"/><meta content="En-cours" name="tags/EN_COURS"/><meta content="page://c0450978-9893-4904-af72-bd05c023a95d" name="pages/page;id"/><meta content="parantika-asep" name="pages/page;name"/><meta content="formation-a-la-recherche/h-d-r/parantika-asep" name="pages/page;path"/><meta content="PARANTIKA Asep" name="pages/page;title"/><meta content="PARANTIKA Asep" name="pages/page;long-title"/><meta content="fr" name="pages/page;lang"/><meta content="esoangers" name="pages/page;site"/><meta content="default" name="pages/page;zone"/><meta content="main" name="pages/page;metadataSetName"/><meta content="empty" name="pages/page;PLUGIN_TAGS_INVISIBLE"/></head>
Offline
Sauf que là vous avez fait votre <xsl:copy-of/> dans une XSL de template, alors que la discussion portait sur le rendu des contenus (par exemple article-main.xsl).
Du coup, je pense que dans votre exemple, vous n'avez que les étiquettes de la page.
Raphael Franchet
Expert Ametys
Offline
Non j'ai bien fait mon <xsl:copy-of/> dans mon fichier these-main.xsl qui est un nouveau contenu que j'ai créé...
Offline
Avez-vous essayer de faire :
<xsl:if test="head/meta[@name='tags/ACTU']">...</xsl:if>
plutot que
<xsl:if test="html/head/meta[@name='tags/ACTU']">...</xsl:if>
Il me semble dans votre cas - d'après votre copy-of - que vous êtes déjà au niveau du noeud <html>
En tout cas, les données y sont bien, votre problème semble être seulement un problème de path XSL.
En revanche je suis étonnée du résultat de votre copy-of ... Vous dites que vous êtes dans une XSL de rendu d'un contenu nomducontenu-main.xsl, mais dans une telle XSL, le XML d'entrée devrait plutot être:
<view>
<content id="" title="...">
<metadata>
<title>....</title>
....
</metadata>
<tags>
....
</tags>
</content>
</view>
En effet dans la conversation précédente, la problématique se posait dans une remontée de contenu, et non dans le rendu d'un contenu.
Laurence Aumeunier
Ametys Expert
Offline
Merci Laurence, je viens d'essayer mais le problème persiste...
Je n'avais pas vu au départ que c'était pour une remontée de contenu, désolé !
Jérémy
Offline
Ok donc au final où se trouve le <xsl:copy-of/> ? Dans le fichier these-main.xsl ? Car le resultat de ce copy-of est vraiment très étonnant ...
Laurence Aumeunier
Ametys Expert
Offline
Oui exactement...
Offline
Pouvez-vous faire un <xsl:copy-of select="/"/> au lieu de celui indiqué plus haut ? ça permettra de voir entièrement le XML que vous avez en entrée de votre XSL
Raphael Franchet
Expert Ametys
Offline
Merci à vous deux de m'aider !
Voilà ce que j'obtiens :
Last edited by Jbuard (09/03/2015 14:27:25)
Offline
Comment faites-vous pour obtenir ça ? Cela s'affiche dans votre navigateur ? Le récupérez-vous dans les sources de la page ?
Avez-vous ajouté un cocoon-view dans votre url ?
Car je n'ai pas l'impression que vous fassiez la bonne manipulation.
L'idée est d'ajouter cette commande xsl dans votre XSL de rendu, en plus du rendu normal.
De visualiser la page en résultant, et dans son code source de récupérer ce XML d'entrée.
Donc notamment, il n'est pas possible que cela ressemble à ce que vous me donnez ci-dessus, car il y a un en-tête XML.
Raphael Franchet
Expert Ametys
Offline
J'ajoute un cocoon-view dans l'url !!!!
Je fais la manip indiquée et voici ce que j'obtiens :
<view><content id="defaultWebContent://aa63ff51-fddb-497f-b12d-2c1d005edff1" name="ducos-jean-pierre-these" title="L'efficacité environnementale des documents d'urbanisme" language="fr" createdat="2014-12-19T12:15:57.648+01:00" creator="sgiffon" lastmodifiedat="2015-03-03T10:42:32.060+01:00" lastvalidatedat="2015-03-03T10:49:58.731+01:00" lastcontributor="wrobel" commentable="true"><metadata><these>true</these><title>L'efficacité environnementale des documents d'urbanisme</title><stitre>Les Schémas de Cohérence Territoriale. Echelle nationale et locale : le cas du Maine-et-Loire</stitre><pauthor>Jean-Pierre</pauthor><nauthor>DUCOS</nauthor><sauthor value="ESO Angers">ESO Angers</sauthor><universite value="Université d'Angers">Université d'Angers</universite><direction><entry name="1"><prenom>Jean</prenom><nom>SOUMAGNE</nom><site value="Université d'Angers">Université d'Angers</site></entry></direction><financement><entry name="1"><nom>Autofinancement</nom></entry></financement><content mime-type="text/xml" lastmodified="2015-03-03T10:42:32.050+01:00"></content><date_soutenance xmlns="http://www.w3.org/1999/xhtml">31 mars 2015</date_soutenance><heure_soutenance>14h</heure_soutenance><annee_soutenance>2015</annee_soutenance><lieu_soutenance>Université d'Angers Maison des Sciences Humaines Amphi Germaine Tillion</lieu_soutenance><jury><entry name="1"><membre>Jean SOUMAGNE - Université d'Angers</membre></entry><entry name="2"><membre>Mustapha EL HANNANI - Université d'Angers</membre></entry><entry name="3"><membre>Jocelyne DUBOIS-MAURY - Université de Paris Est Créteil Val de Marne</membre></entry><entry name="4"><membre>Emmanuelle HELLIER - Université Rennes 2</membre></entry><entry name="5"><membre>Jean-Baptiste HUMEAU - Université d'Angers</membre></entry><entry name="6"><membre>Jean-Philippe STREBLER - Fédération National des SCoT</membre></entry></jury></metadata><workflow-step id="3" icon-small="/plugins/web/resources/img/workflow/WORKFLOW_STATE_VALIDATED-small.png" icon-medium="/plugins/web/resources/img/workflow/WORKFLOW_STATE_VALIDATED-medium.png" icon-large="/plugins/web/resources/img/workflow/WORKFLOW_STATE_VALIDATED-large.png">Validé</workflow-step><dublin-core-metadata><title>L'efficacité environnementale des documents d'urbanisme</title><creator>sgiffon</creator><contributor>wrobel</contributor><date>2015-03-03</date><type>Text</type><format>text/html</format><identifier>defaultWebContent://aa63ff51-fddb-497f-b12d-2c1d005edff1</identifier><language>fr</language><coverage>fr</coverage></dublin-core-metadata><tags><actu parent="GENERIQUE">Actualités</actu><umr_eso parent="REMONTEES_VERS_AUTRE_SITE">UMR Eso</umr_eso><en_cours parent="GENERIQUE">En-cours</en_cours></tags></content><pages><page id="page://10507777-fe98-42e9-92fd-d226a6c1aa97" name="ducos-jean-pierre" path="formation-a-la-recherche/h-d-r/ducos-jean-pierre" title="DUCOS Jean-Pierre" long-title="DUCOS Jean-Pierre" site="esoangers" zone="default" metadatasetname="main" plugin_tags_invisible="empty" lang="fr"></page></pages></view>
Last edited by Jbuard (09/03/2015 14:18:47)
Offline
Comme vous le voyez, à la fin vous trouverez vos étiquettes
<tags><actu parent="GENERIQUE">Actualités</actu><umr_eso parent="REMONTEES_VERS_AUTRE_SITE">UMR Eso</umr_eso><en_cours parent="GENERIQUE">En-cours</en_cours></tags>
Vos XPATH vont donc être du type <xsl:if test="tags/actu">...
(selon votre noeud actuel bien sur, sinon en absolu "/view/content/tags/actu)
Raphael Franchet
Expert Ametys
Offline