Forum Ametys

Forum de la communauté Ametys

You are not logged in.

#1 13/12/2010 17:16:28

joel
Member
From: Labège
Registered: 10/08/2010
Posts: 2

Affichage d'un service à la charte du site

Bonjour,
Je souhaite développer un service. J'ai créé un plugin, j'ai créé le pipeline correspondant dans la sitemap Cocoon. Ma page d'accueil du service s'affiche correctement, elle présente une liste de liens. Mon problème est que lorsque je clique sur un de ces liens, la page affichée n'est pas mise à la charte du site. Comment puis-je faire ça?
Merci d'avance

Offline

#2 13/12/2010 19:48:55

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

Re: Affichage d'un service à la charte du site

La page qui contient le service peut renvoyer vers des urls en :
SITE / LANG / _plugins / PLUGINNAME / TEMPLATE / url

Attention! le site doit être présent coté back mais pas coté front. Il faut utiliser le cms-context input module pour cela.
De même il peut être intéressant de récupérer le template utilisé par la page au lieu d'ne choisir un de manière figée.
Ensuite le HTML renvoyé peut contenir plusieurs <body> qui doivent contenir un id portant le nom de la zone du template à remplir. ex:

<html>
<head></head>
<body id="default">Contenu à mettre dans la zone default</body>
<body id="left">Contenu à mettre dans la zone left</body>
</html>

Raphael Franchet
Expert Ametys

Offline

#3 13/12/2010 20:09:58

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

Re: Affichage d'un service à la charte du site

Dans la sitemap du service, cela implique donc de se passer des paramètres à la xsl du service

<map:transform src="ma_feuille_de_style.xsl">
     <map:parameter name="cms-context" value="{cmscontext:contextWorkspacePath:{request-attr:siteName}}"/>
     <map:parameter name="template" value="{request-attr:template}"/>
     <map:parameter name="lang" value="{request-attr:sitemapLanguage}"/>
     <map:parameter name="plugin" value="{request-attr:pluginName}"/>
</map:transform>

(on en dispose ici dans les attributs de requêtes car le service prend place dans une page)

et dans la xsl, pour créer les liens

  <a href="{$cms-context}/{$lang}/_plugins/{$plugin}/{$template}/monurldansmasitemapdeplugin.html">...</a>

après avoir en en-tête déclaré tous les paramètres

 <xsl:param name="cms-context"/>
 <xsl:param name="plugin"/>
 <xsl:param name="lang"/>
 <xsl:param name="template"/>

Raphael Franchet
Expert Ametys

Offline

#4 01/01/2011 20:40:54

guillaume
Guest
From: Toulouse
Registered: 15/12/2010
Posts: 3
Website

Re: Affichage d'un service à la charte du site

Bonjour

Cette information été pour moi donc je vous remercie beaucoup pour les infos je vais tester ça

Merci beaucoup

Guillaume


Guillaume Escande
Etudiant 4ième années Informatique
INSA Toulouse

Offline

#5 03/01/2011 11:00:31

guillaume
Guest
From: Toulouse
Registered: 15/12/2010
Posts: 3
Website

Re: Affichage d'un service à la charte du site

Bonjour

J'ai testé tout ça et j'ai encore un souci.

Tout d'abord je n'est pas trop compris ce qu'est le cms-context input module.

Ensuite après avoir appliqué la méthode lorsque je clique sur mon lien j'ai une erreur : Erreur Interne de Servlet.

Voici mon lien que je désire atteindre et qui renvoi une erreur ""
   = context
  fr = langue
  service/rando = adresse de mon pipeline
  page = template (du mode demo)


voici l'extrait correspondant de mon sitemap

<map:match pattern="service/rando/r1.html">
                <map:generate type="xquery" src="xquery/requete1.xquery">
                    <map:parameter name="envHome"
                        value="{config:plugin.rando.dbxml.environment.home}" />
                    <map:parameter name="container-name" value="{config:plugin.rando.dbxml.container.name}" />
                </map:generate>
                <map:transform src="xsl/requete1-html.xsl">
                     <map:parameter name="cms-context" value="{cmscontext:contextWorkspacePath:{request-attr:siteName}}"/>
                     <map:parameter name="template" value="{request-attr:template}"/>
                     <map:parameter name="lang" value="{request-attr:sitemapLanguage}"/>
                     <map:parameter name="plugin" value="{request-attr:pluginName}"/>
                </map:transform>
                <map:transform type="i18n">
                    <map:parameter name="locale" value="{locale:locale}" />
                    <map:parameter name="plugin" value="{request-attr:pluginName}" />
                </map:transform>
                <map:serialize type="xhtml"/>
            </map:match>


Et le xsl est de la forme :
<xsl:template match="/">
<html>
<head/>
<body style="font-family:Calibri;" id="left">
  <h2>Menu de droite</h2><br/>
  <a href=""{$cms-context}/{$lang}/_plugins/service/{$plugin}/{$template}/r1.html"">requete1</a>
</body>
<body style="font-family:Calibri;" id="default">
  <h2>Informations personnelles</h2>
  <xsl:apply-templates/>
</body>
</html>


Guillaume Escande
Etudiant 4ième années Informatique
INSA Toulouse

Offline

#6 04/01/2011 10:52:35

joel
Member
From: Labège
Registered: 10/08/2010
Posts: 2

Re: Affichage d'un service à la charte du site

Bonjour,
je pense que le problème vient de ton lien :

<a href="{$cms-context}/{$lang}/_plugins/service/{$plugin}/{$template}/r1.html">requete1</a>

Le "r1.html" doit correspondre à l'URL de ton pipeline, or dans ton cas, le pipeline matche "service/rando/r1.html".

Essaie avec

<a href="{$cms-context}/{$lang}/_plugins/service/{$plugin}/{$template}/service/rando/r1.html">requete1</a>

ou modifie ton pipeline pour ne matcher que "r1.html".

Si jamais tu as toujours l'erreur, est-ce que tu peux nous fournir les logs, afin qu'on voie quelle est l'erreur exacte?

Offline

#7 09/01/2011 21:51:11

guillaume
Guest
From: Toulouse
Registered: 15/12/2010
Posts: 3
Website

Re: Affichage d'un service à la charte du site

Le problème venait bien de la !!

Je vous remercie beaucoup

Guillaume


Guillaume Escande
Etudiant 4ième années Informatique
INSA Toulouse

Offline

Board footer

Powered by FluxBB