You are not logged in.
Pages: 1
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
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
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
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
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
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
Pages: 1