Forum CMS Made Simple FR

Version complète : Besoin d'orientation rapide pour réponse client
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.

kolok

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.10.3
#~ Url du site : http://www.lesateliersduvirtuel.com/zone-test-simple
#~ Hébergeur / Soft : one and one
#~ Informations Système :
#~ linux
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Ecrivez votre question ici.

Bonjour

Je suis absolument nouveau sur CmsMs, mais pas en programmation.

Dans le cadre d'une reponse a un client, je dois savoir si je peux résoudre le problème suivant (meme mal)

1 - J'ai un catalogue de produit assez spécifique et déjà très mature en terme de fonctionnement et de retour. Je souhaite l'intégrer (le lier, l'insérer) dans CmsMs.

2 - Je suis parvenu a afficher une partie des données de mes scripts en utilisant des balises utilisateurs. De simple extrait de BD et tout va bien.

3 - Je suis parvenu a obtenir une fiche complete (en modifiant skeleton) avec un appel du type "{cms_module module='Skeleton' action='display_fiche' skeleton_id='7'  fiche_id='7' }". Tout va bien je suis content


Ma vraie et cruciale question de créer des liens vers mes pages. Je pensais pouvoir m'en sortir avec un appel du genre :

index.php?page=appel-php&fiche_id=10 (apres avoir declarer ma var fiche_id).

J'espérais un truc du genre : une seule page qui affiche les fiches uniquement avec l'ID (cela fonctionne deja comme ca, en stand alone)

Soucis : je ne sais pas recuperer mes variables dans ma page pour alimenter "fiche_id"

Cette question ou cette manière de procéder sont sans doute imparfaite (et seront optimiser des que j'aurais pris pied dans le système)

Merci de ne pas me renvoyer vers la doc sans plus de détail. Je suis dessus a temps plein.

Je cherche un piste précise pour pouvoir répondre vite et si possible lui faire un demonstrateur. Je suis sur d'etre a deux doigts du truc, mais ..... je ne trouve pas le debut de la pelote


Par avance, merci a tous pour votre aide


Philipe
Bonjour Philipe,

Tout d'abord, bienvenue ici ! En espérant que CMSMS saura répondre à toutes attentes.

Pour gérer les produits, as-tu à tout hasard essayé le module Products ? Il permet pas mal de choses avec les définitions de champs (champs additionnels).

Néanmoins pour répondre à ta question, il faut que tu utilises les méthodes de création de liens et de formulaires fournis par l'API de module.

Par exemple, tu peux utiliser un code du genre dans la page "action" (pour la vue de liste de produits) de ton module :
Code :
$smarty->assign('lien_vue_produit', $this->CreateFrontendLink($id, $returnid, 'display_fiche', 'Cliquez ici pour voir le détail', array('fiche_id'=>7)));

Puis utiliser le lien dans ton gabarit Smarty :
Code :
{$lien_vue_produit}

Je vais malheureusement te renvoyer à la documentation pour le détail de ces fonctions, mais il s'agit là de la documentation de l'API (et non du système) : http://www.cmsmadesimple.org/apidoc/

A gauche, choisis "CMSModule".

Tu peux aussi consulter la suite d'articles écrits par Bess sur ce site : http://www.cmsmadesimple.fr/blog/33/63/C...e---part-I

Bon code !
Perso je crains de ne pas comprendre le besoin exact, j'espère qu'Airelibre aura répondu à ta demande, sinon reformule nous la partie

Citation :Ma vraie et cruciale question de créer des liens vers mes pages. Je pensais pouvoir m'en sortir avec un appel du genre :

index.php?page=appel-php&fiche_id=10 (apres avoir declarer ma var fiche_id).

J'espérais un truc du genre : une seule page qui affiche les fiches uniquement avec l'ID (cela fonctionne deja comme ca, en stand alone)

kolok

Je vous remercie tous les deux pour vos reponses, d'autant plus qu'en relisant ma question, je me rend compte que j'ai ete assez imprécis. Je vais tenter de clarifier ma démarche.

Etape 1 - Generer un lien vers ma fiche. J'ai déjà travailler avec smarty (prestashop) et je sais faire un lien. Mais merci de m'avoir montrer un moyen plus compact pour le faire. j'avais copier les pratiques de presta, et c'est moins rapide. Dans le principe, les listes qui renvoient vers les fiches completes sont de simple liste, et j'avoue les avoir passer en direct. (echo"<li><a ...").


Etape 2 - Afficher une fiche a partir de son ID. J'y arrive, aussi bien a partir d'un module que d'un plugin. (j'ai d'ailleurs trouve que c'etait assez rapide et facile)

Etape 3 - recuperer la variable d'appel dans ma page, pour pouvoir faire quelque chose du genre {cms_module MonModule fiche_id='$fiche_id'}

Et là ça butte. Pas de variable, rien. dois-je imperativement faire un template smarty pour cela ? (sous presta, je suis passer en direct plein de fois sans soucis, car je sais trouver le tableau avec toutes les variables de la page en cours. Là $params m'echappe un peu. )

Je suis bien conscient que ma demarche est tout sauf orthodoxe, mais si je ne repond pas un truc avant vendredi, je loupe l'affaire. C'est dommage, car j'ai 90% du projet en main et que je compte employer cmsms pour d'autres projets (apres une bonne période d'autoformation ;-)

@AirLibre : Je suis en train de lire la doc. mais je ne trouve pas le bout qui m'interesse. afficher ma variable dans le template, ca ne me permet pas de l'injecter dans mon php ?
Pour le dire autrement , en esperant etre clair. je veux juste recuperer un $POST ou un $GET et le passer a mon script (enfin l'equivalent)

J'espere avoir ete plus clair et vous remercie.
je plonge dans la doc
Si tu as :
Code :
{cms_module module='MonModule' fiche_id=$fiche_id}

Dans ton fichier "action.default.php" tu peux récupérer ta variable avec :
Code :
$params['fiche_id'];

Tous les paramètres passés au sein d'un module sont stockés dans le tableau "$params[]". Ceci est très utile car le système nettoie les variables avant de les placer dans ce tableau.

Tu peux alors passer ta variable à smarty pour l'affichage :
Code :
$smarty->assign('ma_fiche_id_pour_smarty', $params['fiche_id']);

Avant d'afficher le template avec $this->ProcessTemplate('MonTemplate.tpl');

Si tu as utilisé :
Code :
$this->RestrictUnknownParams();

dans ta classe de module (fichier MonModule.module.php), il faut impérativement déclarer ta variable dans le module pour qu'elle ne soit pas zappée lors de la récupération des paramètres.

Pour cela, dans la fonction "function InitializeFrontend()", ajoute :
Code :
$this->SetParameterType('fiche_id',CLEAN_INT);

Pour le reste, la lecture du fichier module de Skeleton et la doc fournie te reseigneront très bien sur les méthodes des modules.

De manière générale, CMSMS fonctionne très différemment de Prestashop, surtout pour les modules où c'est bien plus souple.
<edit : ca marche pas en fait>
Tiens je savais pas que le tableau "$params" était assigné à Smarty. J'avais jamais essayé en même temps Wink Merci pour l'info
tu me mets le doute... atta je retest :/
bon j'ai dis de la grosse merde.... je retire Sad

je vais trouver autre chose...
Lol, pas de soucis Wink Pour te rattraper tu peux parler de {get_template_vars}
Ca y est j'ai retrouvé l'astuce :p

edit : Airelibre, en Mars tu vas dormir par terre, c'est moi qui te le dis ! :mad:

[h]1 - Créer une udt nommé "assign2Template" qui comporte le code suivant[/h]


Citation :if(!empty($_GET['XXX']) && is_numeric($_GET['XXX']))
{
$smarty = cmsms()->GetSmarty();
$smarty->assign('XXX', $_GET['XXX']);
}

Notez que is_numeric($_GET['XXX']) n'est présent que parce que dans notre cas on parle d'identifiant numérique.

Remplacer XXX par le nom du paramètre passé dans l'URL


[h]2 - Ajouter dans votre gabarit[/h]

{assign2Template}
{get_template_vars}

Normalement la liste des variables dispo pour le template via Smarty devraient maintenant apparaitre sur le site, y compris la valeur de XXX.


[h]3 - Exploiter cette nouvelle variable[/h]


Code :
{cms_module MonModule fiche_id=$XXX}


[h]4 - Enjoy[/h]
Bien bien, je t'attend au GeekMoot Wink

kolok

je viens de voir vos messages et je vous en remercie. je vais y porter toute l'attention qu'ils meritent. Hier nuit, j'ai fait un test de bourrin, avec un gros $POST bien brutal dans un plugin et cela fonctionne.

Maintenant, je vais appliquer votre méthode qui est bien plus orthodoxe.

je vous remercie pour votre aide. C'est vrai que c'est assez different de presta, mais je pense que je vais m'y faire, car c'est bien documenté et logique. Laaargement meileur impression que joomla en tout cas

merci pour tout
test tout ça et dis nous si ça te convient Smile