Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl
#1

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.4
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

Petite question technique : pour passer les traductions d'un module (perso) aux templates, j'ai croisé 2 méthodes :

1) On crée une variable smarty nommée proprement et à laquelle on assigne une valeur de $this->Lang('...');
2) On passe le module en tant que variable smarty et on utilise directement $this->Lang() dans les templates.

Cette seconde méthode est séduisante car elle réduit parfois considérablement la taille du code d'une action d'un module, mais est-elle réellement recommandable ?

Merci pour vos éclaircissements !

Heriquet

www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#2

Salut Heriquet (petit Eric?),
je n'ai jamais vu la seconde méthode, tu as testé? Parce que $this-> dans un template, ça me parait bizarre...
Ça m'intéresse de savoir dans quel module tu as vu ça.

{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
Répondre
#3

Salut Jissey,

Je ne retombe pas sur le module (je suis sur 5 projets de front donc...) mais il y avait une variable $mod et le code était $mod->Lang('...').

www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#4

Trouvé... C'est CGCalendar :

Dans le template :

Code :
[== HTML ==]
<a href="{$event.url}">{$mod->Lang('cal_more')}</a>

www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#5

houla! intéressant tout ça. Est-ce à dire qu'on peut accéder aux autres méthodes du modules? Cool
Ou il est le Président Développeur General? :p
Il peut nous renseigner?

{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
Répondre
#6

A priori je dirais oui à partir du moment ou tu passes l'instance du module...

Ceci étant un module de Calguy, j'ose espérer que c'est "propre" de travailler comme ca.

Car cela évite de créer une variable par libellé si tu sais d'avance que tu n'en utiliseras que 10 sur les 60 libellés présents...

www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#7

réponse personnelle : les deux sont valable. La seconde a le mérite de faciliter le rôle de développement côté Template comme tu l'as dit

seulement cela peut avoir un coût de montée en mémoire si tu fait un $smarty->assign() car une copie de tous les libellés est passée à smarty. Ma solution est de faire appel à $smarty->assignByRef() qui fait la même chose sans dupliquer en mémoire le contenu des langues.

http://www.smarty.net/docs/en/api.assign.by.ref.tpl

assignByref est également utile pour modifier dans le template à la volée le contenu des variables.... enfin je doute que ce soit vraiment un comportement intéressant Big Grin
Répondre
#8

Good to now ! Merci.

Bon désormais je risque d'utiliser un peu plus la seconde méthode ;-).

www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#9

Bon alors j'ai testé le concept dans un module perso et ca marche pas mal...

Dans l'action du module :
Code :
[== PHP ==]

$smarty->assign_by_ref('w2ms',$this);

Dans le template :
Code :
[== HTML ==]
{$w2ms->Lang('estate_view_state')}

Ca marche pas mal et c'est pas moins performant...

Et surtout ca m'évitera d'avoir 150 variables de libellés alors que j'en utilise parfois que 15, en fonction du projet et du template...

www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#10

Smile content que ça te serve
Répondre
#11

J'espère surtout que mon post servira à d'autres ;-).

www.web-ep.be - Développeur Web Freelance - Développeur/Intégrateur CMS Made Simple (création de sites, développement de modules/plugins/templates sur mesure), spécialisé dans les sites pour l'immobilier.
Répondre
#12

Merci pour l'info Bess, je vais tester l'assignation par référence Wink

Pour le $mod->Lang c'est en effet très pratique pour le développement. Pour ma part, j'ai souvent à la fois le module en cours ($mod) et ma librairie ($aireLibs) dans laquelle je met les termes "génériques" traduits du style "name", "template", etc.. partagés entre les modules
Répondre


Atteindre :


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