Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Changement dynamique en fonction url appel
#1
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 2.1.5
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~


Bonjour,


Sur un gros site j'ai deux grandes rubriques(avec de multiples sous-rubriques) avec un gabarit différent pour chacune des deux rubriques.
Certaines pages sont communes aux deux rubriques, je ne souhaite pas les dupliquer (duplicate content etc, et structure trop lourde).
Du coup je souhaite que certaines pages du gabarit rub1 se présentent comme des pages du gabarit rub2 si et seulement si elles sont appelées depuis un lien contenu dans une page de la rubrique rub2.

Je pensais créer un troisième gabarit qui afficherait des gcb header et footer différents en fonction de la page appelante.
Structurellement c'est clairement le plus simple : l'url reste identique et cela répond à mon cahier des charges.

Là j'ai plusieurs pistes :
- parser l'url refferer de la page appelante et en fonction retourner le cgb adapté (le code peut être un peu complexe à cause des url externes par exemple Google)
- passer une variable à l'url , tester l'existence de cette variable et renvoyer en fonction le gcb adapté


Clairement je ne suis pas coincé, mais il peut exister une solution plus élégante qui m'aurait échappé....

A vous lire Smile
Win 7 pro 64 - CMSMS 1.6.4 à 2.2.9
#2
Salut,

Tu pourrais travailler avec CGSimpleSmarty qui te permet de récupérer l'alias de la rubrique principale.
Admettons que tu donnes comme alias à tes 2 grandes rubriques : rubrique1 et rubrique2.
Tes blocs header et footer se nommeront : headerrubrique1 et 2, footerrubrique1 et 2.
Dans la page appelante, le lien doit être sous forme :
Code :
{cms_selflink page="alias" urlparam=$urlparam}
Un seul gabarit contenant :
Code :
{strip}
{$urlparam = "{cgsimple::get_root_alias()}"}
{assign var=urlparam value="?gabarit=$urlparam" scope="global"}
{if isset($smarty.get.gabarit)} {* si paramètre passé en url *}
    {$header={global_content name="header{$smarty.get.gabarit}"} scope=global}
    {$footer={global_content name="footer{$smarty.get.gabarit}"} scope=global}
{else} {* si pas de paramètre, récupère l'alias du root parent *}
    {$header={global_content name="header{cgsimple::get_root_alias()}"} scope=global}
    {$footer={global_content name="footer{cgsimple::get_root_alias()}"} scope=global}
{/if}
{process_pagedata}{/strip}<!DOCTYPE HTML>
<html lang="fr">
    <body>
        <header>
            {$header}
        </header>
        [...]
        <footer>
            {$footer}
        </footer>
    </body>
</html>

Je crois que c'est efficace et élégant Cool


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)