Forum CMS Made Simple FR
[RESOLU]Appeler une balise à partir d'un module - Version imprimable

+- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr)
+-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html)
+--- Forum : Modules, Tags (https://forum.cmsmadesimple.fr/forum-14.html)
+--- Sujet : [RESOLU]Appeler une balise à partir d'un module (/thread-3762.html)



[RESOLU]Appeler une balise à partir d'un module - bobjo - 15/02/2016

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



Bonjour,

Je suis entrain de développer un module qui doit ajouter dynamiquement des contenu dans le formulaire de création de page.

Pour ça, je voudrez utiliser la balise content.
Seulement quant j'appel mon module dans le gabarit et que je me rend dans le formulaire de création de page j'ai cette erreur qui apparaît :
"Warning: array_merge(): Argument #2 is not an array in /home/moulindu/www/new_vitrine/lib/smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 468"

Et sur le front j'ai cette erreur : "too many shorthand attributes"

Comment je peu faire pour appeler et renseigner une balise à partir d'un module ?

Cordialement

bobjo


[RESOLU]Appeler une balise à partir d'un module - airelibre - 15/02/2016

Hello,

je ne crois pas que {content} soit adapté - Veux-tu parler de {content_module} ?


[RESOLU]Appeler une balise à partir d'un module - bobjo - 17/02/2016

Bonjour,

Merci de me répondre.

J'ai regardé sur internet comment utiliser la balise content_module mais je ne trouve rien.
Il y a bien comment l'employer dans le gabarit mais rien sur se qui doit y avoir dans le module qu'elle appel.

Auriez vous des infos ou des tuto sur ce sujet.

Cordialement

bobjo


[RESOLU]Appeler une balise à partir d'un module - airelibre - 17/02/2016

Il te faudra un module d'exemple + la doc

Doc : http://apidoc.cmsmadesimple.org/classes/CMSModule.html
Exemple : http://dev.cmsmadesimple.org/projects/econtentblocks

Je ne sais pas si le module fonctionne sur la v2, mais le code source t'aidera déjà à maitriser les méthodes utiliser au sein du module.

Regarde les méthodes :
- GetContentBlockFieldInput
- GetContentBlockFieldValue
- ValidateContentBlockFieldValue

Bon dev


[RESOLU]Appeler une balise à partir d'un module - bobjo - 17/02/2016

Merci,

Je vais regarder tous ça.

Cordialement

bobjo


[RESOLU]Appeler une balise à partir d'un module - airelibre - 17/02/2016

Si c'est résolu pour toi, merci de marquer [Résolu] en début du sujet du forum Wink

Mais si tu veux compléter le sujet avec tes remarques issues de tes recherches, n'hésites pas !


[RESOLU]Appeler une balise à partir d'un module - bobjo - 17/02/2016

Bon alors je réussi à afficher un block en utilisant la fonction GetContentBlockFieldInput et il ne faut pas oublier cette fonction :
Code :
[== PHP ==]
function HasCapability($capability,$params = array())
    {
        switch( $capability ) {
        case 'contentblocks':
            return TRUE;
        default:
            return FALSE;
        }
    }

Mon problème c'est que cela affiche autant de bloc qu'il y a d'appel à la balise content module.
Moi ce que je voudrais faire c'est afficher autant de bloc que je veux avec un seul appel à la balise.

J'ai testé en faisant une boucle mais cela m'affiche bien les textarea mais ne m'enregistre rien.
Je pense que le nom du bloc est utilisé comme propriété lors de l'enregistrement dans la BDD.

Donc j'en revien au debut est il possible avec un module de créer un appel à la balise content_module afin de créer autant de champ que j'ai besoin.

Cordialement

bobjo


[RESOLU]Appeler une balise à partir d'un module - bobjo - 17/02/2016

Bon alors j'ai tourné le problème dans tous les sens.

Mon problème semble venir du fait que pour savoir si il y a une balise content_module, CMSMS parse le template associé à la page et cherche content_module.

Comme la génération des balises content_module se fait à partir d'un appel à mon module CMSMS ne trouve pas les balises que je crée.

Une petite explication :

Voila ce que je veux dans mon template :
{content_module module="mon-module" block="test_1"}
{content_module module="mon-module" block="test_2"}
{content_module module="mon-module" block="test_3"}

Ce que je veux c'est que ces 3 balises soit créées par mon module :
ex : {mon-module action="generation_balise"}
qui affichera dans mon template :
{content_module module="mon-module" block="test_1"}
{content_module module="mon-module" block="test_2"}
{content_module module="mon-module" block="test_3"}

mais même si mon module crée bien les balises, lors de la création ou de la modification d'une page, comme CMSMS fait juste une recherche des termes content_module, cela ne fonctionne pas...

Une autre solution serait de créer un type de contenu mais cela devient un peut lourd pour ajouter des champs dans le formulaire des page de manière dynamique.

Si vous avez une solution ou une idée merci d'avance

Cordialement

bobjo


[RESOLU]Appeler une balise à partir d'un module - bobjo - 17/02/2016

Peut être que plus de précision sur le module que je veux faire pourra vous donner des idées pour m'aider.

Donc l'idée serait de faire un module multilangue sans utiliser plusieurs arbo des pages.

Une seul arbo et on choisi la langue dans le formulaire. D'ou le besoin d'avoir plusieurs champs (au moins contenu titre et titre menu) qui sont créé de manière dynamique en fonction des langues enregistrées dans le module.

Ce serai un peu le même principe que dans prestashop (pour ceux qui connaisse) seulement que prestashop est pensé de base pour le multilangue et qu'il y a dans la BDD des tables pour cela.

Après ces explications si vous avez des idées des solutions des remarques ....
merci d'avance

Cordialement

bobjo


[RESOLU]Appeler une balise à partir d'un module - airelibre - 22/02/2016

Je t'invite alors à en discuter avec Eric (heriquet sur le forum) qui est très au fait de ces problématiques multi-langues.

Là le {content_module} n'est pas adapté car comme tu l'as compris, CMSMS parse le template à le recherche de {cms_module}.

La v2 a été pensée pour que le ContentManager puisse être remplacé par un autre module. Peut-être que la solution est par là. Ou regarde du côté de AdvancedContent qui pourra peut être te proposer d'autres solutions (mais il crée lui-même un type de contenu à part).

Cela dit, pour gérer des titres de pages différents etc... je dirai qu'un nouveau module ContentManager dédié multi-langues serait probablement la solution la plus souple.


[RESOLU]Appeler une balise à partir d'un module - bobjo - 23/02/2016

Bonjour,

Merci encore de me répondre.

J'ai résolu mon problème des balise {content} et {content_module} en les créant dans les template à l'install du module.
Je gère ça avec des regex.

Je vais regarder le module ContentManager cela peut être intéressant.

Cordialement

bobjo