CTLModuleMaker accès variable niveau 1

Support en français pour CMS Made Simple.

Moderator: jce76350

Post Reply
nico63
Forum Members
Forum Members
Posts: 36
Joined: Wed Mar 07, 2007 1:00 am
Location: Paris

CTLModuleMaker accès variable niveau 1

Post by nico63 »

Bonjour,
Je ré ouvre un sujet : http://forum.cmsmadesimple.org/index.php/topic,35559.msg167927.html#msg167927 que j'avais marqué comme résolu, j'avais utilisé {$parentobj->variable} mais la résolution n'était que partielle et me suffisait à l'époque. Mon client me faisant faire quelques changements, en fait il faut absolument que partant du niveau3 quand je regarde une liste, je puisse accéder à une variable de niveau 1 avec la méthode proposée : {MODULENAME_get_levelitem} et décrite dans la FAQ de CTLModuleMaker :
{mymodule_get_levelitem what="category" alias="myfirstcategory" assign="catobject"}

And you can then use the assigned object to display information:

{$catobject->name}
J'ai beau lire et essayer, je n'arrive pas à un résultat.

Y aurait-il un exemple d'application ?

Dans mon cas le module s'appelle sejours4, la première catégorie : categorie et la variable à retrouver : nomcat
Donc je fais : {sejours4_get_levelitem what="categorie" alias="nomcat" assign="catobject"} puis {$catobject->name} mais aucun résultat ne s'affiche.
Je dois faire une erreur quelque part...
Merci d'avance pour l'aide,
Nicolas.
User avatar
plger
Forum Members
Forum Members
Posts: 196
Joined: Wed Oct 15, 2008 10:38 am

Re: CTLModuleMaker accès variable niveau 1

Post by plger »

J'ai testé à nouveau pour être certain qu'un bug n'était pas apparu dans les dernières version, mais tout devrait fonctionner comme il se doit. À moins que tu n'essaie de d'appeler la fonction d'en dehors du module? (comme il est indiqué dans le faq, la fonction n'est disponible qu'à partir des templates du module).
nico63 wrote: Dans mon cas le module s'appelle sejours4, la première catégorie : categorie et la variable à retrouver : nomcat
Donc je fais : {sejours4_get_levelitem what="categorie" alias="nomcat" assign="catobject"} puis {$catobject->name}
La balise que tu indiques ne correspond pas trop à l'introduction que tu en fais. Elle signifierais que ton niveau s'appelle "categorie" (les choix de niveaux sont indiqués dans l'aide), que dans ce niveau il y a une categorie dont l'alias (et non le nom... en éditant la catégorie, tu devrais voir l'alias) est "nomcat", et que tu emmagasine l'objet dans la variable $catobjet. Ensuite, tu essaie de récupérer la variable (ou champs ou attribut) "name" de l'objet.
Je crois qu'il faudrait vérifier les valeurs de tes paramètres...
nico63
Forum Members
Forum Members
Posts: 36
Joined: Wed Mar 07, 2007 1:00 am
Location: Paris

Re: CTLModuleMaker accès variable niveau 1

Post by nico63 »

Merci pour ta réponse, Pierre-Luc,

Ma problématique pour essayer d'être un peu plus clair :
voici mes niveaux : categorie  -> souscategorie -> sejours  Je dois à la fois récupérer des éléments de sejours et un élément de categorie sachant que je parcours une liste dans un des template du module.
Pour sejours c'est bon, pour categorie il y a problème.

J'ai essayé ainsi pour récuperer un élément de categorie et effectivement je faisais une petite erreur, mais comme cela :
{sejours4_get_levelitem what="categorie" alias="GroupesJeunesEte" assign="catobject"}
{$catobject->nomcat}

cela fonctionne à partir du moment ou je pars du principe que je connais l'alias du premier niveau, exemple ici : GroupesJeunesEte, or j'en ai plusieurs --> voici la table Mysql correspondant à ceci :

INSERT INTO `cms_module_sejours4_categorie` (`nomcat`, `id`, `name`, `alias`, `item_order`, `active`, `isdefault`, `date_modified`) VALUES
('Groupes de Jeunes', 1, 'GroupesJeunesEte', 'GroupesJeunesEte', 1, 1, 0, '2009-07-19 14:43:09'),
('Groupes d\\''Adultes', 2, 'GroupesAdultesEte', 'GroupesAdultesEte', 2, 1, 0, '2009-07-19 14:43:45'),
('Lycées / Collèges', 3, 'LyceesCollegesEte', 'LyceesCollegesEte', 3, 1, 0, '2009-07-19 14:44:23'),
('Colos', 4, 'ColosEte', 'ColosEte', 4, 1, 0, '2009-07-19 14:45:13'),
('Famille', 5, 'FamillesEte', 'FamillesEte', 5, 1, 0, '2009-07-19 14:45:34'),
('Seniors', 6, 'SeniorsEte', 'SeniorsEte', 6, 1, 0, '2009-07-19 14:46:10');

Dans mon cas je ne connais pas cet alias au départ, il faut que je remonte l'arbre un peu à la manière de {$item->parent_object->parent_object->nomcat} ce qui n'est pas possible comme tu me l'avais indiqué puisque je parcours une liste.

Donc puis-mettre une variable dans alias=" " à la place d'une expression en "dur" ? ou autre sachant que je dois remonter de deux niveaux. Sinon il faut que je trouve une autre méthode...
Je réfléchis, j'ai peux-être fais une erreur de logique quelque part, mais si tu as une piste ou la solution alors c'est super!
Nicolas.
User avatar
plger
Forum Members
Forum Members
Posts: 196
Joined: Wed Oct 15, 2008 10:38 am

Re: CTLModuleMaker accès variable niveau 1

Post by plger »

Oui, tu pourrais mettre une variable dans le paramètre alias. Par exemple, tu pourrais faire ceci :

Code: Select all

{sejours4_get_levelitem what="souscategorie" alias=$item->parent_alias assign="subcatobject"}
{sejours4_get_levelitem what="categorie" alias=$subcatobject->parent_alias assign="catobject"}
Mais si tu fais ça sur tous les éléments d'une liste, c'est pas très performant: ça implique que pour chaque élément pour lequel tu veux récupérer la catégorie, tu ajoutes 2 requêtes...

Dans la prochaine version, il y aura une action "tree" qui permettra de récupérer tous les niveaux en même temps comme dans le sitemap. En attendant, si tu veux tu peux mettre ici en attachement les fichier sejours4.module.php et action.default.php de ton module (il faudra les renommer avec une extension .txt par exemple) et je vais te créer l'action.

Pierre-Luc
nico63
Forum Members
Forum Members
Posts: 36
Joined: Wed Mar 07, 2007 1:00 am
Location: Paris

Re: CTLModuleMaker accès variable niveau 1

Post by nico63 »

Super et Merci beaucoup Pierre-Luc,

Voici les fichiers sejours4.module.php et action.default.php renommés tous deux en .txt en attachments. Tu verras, je fonctionne actuellement sur la version 1.8.4.1

Effectivement l'action "tree" sera precieuse pour le module.

En attendant je vais essayer avec les deux requêtes avec variable dans le paramètre alias.

Nicolas.
Attachments

[The extension txt has been deactivated and can no longer be displayed.]

[The extension txt has been deactivated and can no longer be displayed.]

nico63
Forum Members
Forum Members
Posts: 36
Joined: Wed Mar 07, 2007 1:00 am
Location: Paris

Re: CTLModuleMaker accès variable niveau 1

Post by nico63 »

Après un rapide test, ca marche en tout cas pour l'instant très bien en passant par une variable pour l'alias comme tu me l'a indiqué.
Merci beaucoup. Nicolas.
Post Reply

Return to “French - Français”