Forum Ametys

Forum de la communauté Ametys

You are not logged in.

#1 21/01/2014 11:54:14

webupsud
Guest
Registered: 21/01/2014
Posts: 77

Tester la présence d'une étiquette sur un contenu

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

#2 21/01/2014 12:20:35

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Tester la présence d'une étiquette sur un contenu

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

#3 21/01/2014 12:30:01

webupsud
Guest
Registered: 21/01/2014
Posts: 77

Re: Tester la présence d'une étiquette sur un contenu

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

#4 21/01/2014 13:08:34

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Tester la présence d'une étiquette sur un contenu

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 smile 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

#5 21/01/2014 13:16:11

webupsud
Guest
Registered: 21/01/2014
Posts: 77

Re: Tester la présence d'une étiquette sur un contenu

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

#6 21/01/2014 13:24:05

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Tester la présence d'une étiquette sur un contenu

smile
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

#7 21/01/2014 18:19:26

webupsud
Guest
Registered: 21/01/2014
Posts: 77

Re: Tester la présence d'une étiquette sur un contenu

La fonction contentTags() semble correspondre à ce dont nous aurions besoin, mais je ne comprends pas comment l'utiliser.

Offline

#8 21/01/2014 19:13:39

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Tester la présence d'une étiquette sur un contenu

ah oui... la réponse est que vous ne pouvez pas sad

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 smile comme quoi smile
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

#9 21/01/2014 19:42:00

webupsud
Guest
Registered: 21/01/2014
Posts: 77

Re: Tester la présence d'une étiquette sur un contenu

J'ai essayé ceci : <xsl:if test="tags/montag">, sans succès dans la boucle <xsl:template match="content">. Comment tester la valeur ?

Offline

#10 22/01/2014 10:54:52

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Tester la présence d'une étiquette sur un contenu

non, en effet votre test est loin de la réalite smile
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

#11 23/01/2014 17:33:30

webupsud
Guest
Registered: 21/01/2014
Posts: 77

Re: Tester la présence d'une étiquette sur un contenu

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

#12 03/03/2015 16:23:45

Jbuard
Guest
Registered: 11/12/2014
Posts: 27

Re: Tester la présence d'une étiquette sur un contenu

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

#13 03/03/2015 17:54:26

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Tester la présence d'une étiquette sur un contenu

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

#14 03/03/2015 18:03:10

Jbuard
Guest
Registered: 11/12/2014
Posts: 27

Re: Tester la présence d'une étiquette sur un contenu

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

#15 03/03/2015 18:22:03

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Tester la présence d'une étiquette sur un contenu

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

#16 04/03/2015 10:45:11

Jbuard
Guest
Registered: 11/12/2014
Posts: 27

Re: Tester la présence d'une étiquette sur un contenu

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

#17 04/03/2015 15:31:19

Laurence Aumeunier
Expert Team
Registered: 10/08/2010
Posts: 154

Re: Tester la présence d'une étiquette sur un contenu

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

#18 04/03/2015 15:52:21

Jbuard
Guest
Registered: 11/12/2014
Posts: 27

Re: Tester la présence d'une étiquette sur un contenu

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

#19 06/03/2015 18:16:42

Laurence Aumeunier
Expert Team
Registered: 10/08/2010
Posts: 154

Re: Tester la présence d'une étiquette sur un contenu

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

#20 09/03/2015 08:55:36

Jbuard
Guest
Registered: 11/12/2014
Posts: 27

Re: Tester la présence d'une étiquette sur un contenu

Oui exactement...

Offline

#21 09/03/2015 10:52:23

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Tester la présence d'une étiquette sur un contenu

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

#22 09/03/2015 11:57:37

Jbuard
Guest
Registered: 11/12/2014
Posts: 27

Re: Tester la présence d'une étiquette sur un contenu

Merci à vous deux de m'aider !

Voilà ce que j'obtiens :

Last edited by Jbuard (09/03/2015 14:27:25)

Offline

#23 09/03/2015 12:12:42

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Tester la présence d'une étiquette sur un contenu

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

#24 09/03/2015 14:17:24

Jbuard
Guest
Registered: 11/12/2014
Posts: 27

Re: Tester la présence d'une étiquette sur un contenu

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

#25 09/03/2015 15:41:51

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Tester la présence d'une étiquette sur un contenu

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

Board footer

Powered by FluxBB