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

[RESOLU]Récupérer variable d'url
#1

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



Bonjour,

Je cherche depuis plusieurs jours à récupérer une variable d'url.
Mais malgré tous les conseilles trouvé dans le forum rien ne fonctionne.

Je travail avec le module Cataloger et la pagination ne fonctionne pas dans la liste de produit.
Lorsque l'on clique sur la page suivante la page se recharge et affiche les même produits.

Donc j'ai testé l’existence de la variable passé dans l'url et celle-ci n'existe pas.

Je ai ajouté mon paramètre dans la méthode SetParameters du fichier Cataloger.module.php avant et après RestrictUnknownParams mais cela ne change rien.

J'ai ajouté la méthode InitializeFrontend pour créer mon paramètre mais toujours rien.

J'ai trouvé ce lien http://www.packtpub.com/article/cms-made...fined-tags indiquant comment récupérer l'url.
Mais lorsque j'affiche l'url, ma variable à disparut...

J'ai modifié la création des liens de la pagination en utilisant la méthode CreateFrontendLink mais cela ne change rien.
Ma variable est supprimée.

Auriez vous une solution pour que je puisse récupérer cette variable.

Cordialement
#2

retire RestrictUnknownParams , qu'est ce que ça donne ?

quelle est l'url quand tu clic sur un changement de page ? et quand tu clic sur une autre page
#3

Bonjour bess,

Merci de prendre du temps pour me répondre.

Je suis allé un peu plus loin que de simplement retirer RestrictUnknownParams, j'ai supprimer la méthode SetParameters, car d'après ce que j'ai lu dans l'Apidoc elle n'est plus utilisée.
Mais cela ne change rien...

Lorsque je clique sur un changement de page (de la pagination), l'url est : http://www.print4you.fr/affiches-plastif...ml?start=4 (avec la génération des liens d'origine du module).

Avec la méthode CreateFrontendLink l'url est : http://www.print4you.fr/index.php?mact=C...2&page=122

Jai aussi essayé en renseignant le paramètre prettyurl url : http://www.print4you.fr/4/affiches-plastifiees.html

Lorsque je clique sur une autre page l'url est : http://www.print4you.fr/impression-en-numerique.html

Encore merci.

Cordialement
#4

avant de faire le prettyurl il va falloir faire marcher tes url tout court, les pretty url s'appuyant sur le fonctionnement des autres.

index.php?mact=Cataloger,catalogmodule,defaultcategory,1&catalogmodulestart=4&catalogmodulereturnid=122&page=122 ne fonctionnera pas

&page=122 est un paramètre sans attribution de module quelconque... cmsms le ne transmet donc pas à qui de droit.

exemple avec mes bannières sur cmsms

index.php?mact=Banners,cntnt01,link,0&cntnt01banner_id=14&cntnt01category_id=7&cntnt01returnid=15


tu vois le point commun sur le nommage des variables ? reprenons ton url

index.php?mact=Cataloger,catalogmodule,defaultcategory,1&catalogmodulestart=4&catalogmodulereturnid=122&page=122

tu sais ce qu'il te reste à faire Smile

Alors question : comment ce fait il qu'en utilisant les fonctions CreateFrontendLink, tu n'ai QUE ton paramètre qui ne soit pas bien généré alors que c'est cencé être automatique ???? aucune idée... tu devrais me montrer ton code

Sinon astuce : la variable $id présente nativement dans tes classes contiendra normalement le catalogmodule manquant, ce qui signifie que si tu écrase cette valeur dans ton code : CreateFrontendLink ne fonctionnera pas bien (vérifie ce point) Wink
#5

Encore une fois merci car je ne sais vraiment plus quoi faire...

Alors je sais pas si j'ai bien compris ce que tu m'as dis mais j'ai essayé !
J'ai zappé la méthode CreateFrontendLink en j'ai généré le lien en dure.
Ce qui me donne :
Code :
http://www.print4you.fr/index.php?mact=Cataloger,catalogmodule,defaultcategory,1&catalogmodulestart=4&catalogmodulereturnid=122&catalogmodulepage=122
catalogmodule est la valeur de $id.
Mais cela ne change rien.
Le code de CreateFrontendLink :

Code :
[== PHP ==]
$param['start'] = $i;
$navstr .= $this->CreateFrontendLink($id, $curPage->Id(), 'defaultcategory', $pageInd, $param);
J'ai également essayé en remplassant $id par catalogmodule.
Mais page ne prend toujours pas de préfix.

Cordialement
#6

Un petit oubli !!!

En mode debug la pagination fonctionne normalement....

Désolé pour cet oubli.

Cordialement
#7

et donc tu en es où là ?
#8

J'en suis toujours au même point.
La pagination ne fonctionne pas sauf en mode débug (encore désolé pour cet oubli)

cordialement
#9

Bon j'ai peut être trouvé une piste dans le fichier contenttype.catalogcategory.php.
Apparemment se serait dans ce fichier que le tableau $params serai créé.

Cordialement
#10

$params est un tableau générique qui contient toutes les variables passées au module (en ayant été éventuellement nettoyé de variables non autorisées).

Tu en trouveras des traces dans la classe CMSModule (dossier lib/class).

As-tu essayé d'afficher les variables $_GET, $_POST ou encore $_REQUEST pour chercher ton paramètre ?

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.
#11

Bonjour heriquet, et merci à toi aussi de prendre du temps pour mon problème.

Oui, j'ai essayé d'afficher les varibles $_GET, $_POST, $_REQUEST mais ma variable n'est nul part...

J'aimerai éviter de modifier des classe du core comme CMSModule.

Par rapport au fichier contenttype.catalogcategory.php, j'ai trouvé l'endroit ou les paramètre sont créé est envoyé à l'action (je met le code de la méthode)

Code :
[== PHP ==]
function Show($param = '')
    {
        if ($param == 'content_en')
        {
            $params = array();
            $this->PopulateParams($params);//Cette ligne renseigne le tableau
            $pf = new Cataloger();
            @ob_start();
            $pf->DoAction('defaultcategory', 'catalogmodule', $params);//Cette ligne redirige vers le fichier action.defaultcategory.php
            $text = @ob_get_contents();
            @ob_end_clean();
            return '{literal}' . $text . '{/literal}';    
        }
    }

Donc j'arrive à créer $params['mavariable'], mais mon problème c'est qu'à chaque chargement de la page cela me remet ma valeur par défaut et donc je n'avance pas dans la pagination.

De plus la création de $params['mavariable'] peut être généré directement dans le fichier action.

Je tourne en rond....

Encore merci bess et heriquet pour votre aide

Cordialement
#12

Code :
$this->PopulateParams($params)

==>

Code :
$oldval = 1; //page 1 par défaut
if(!empty($params['mavariable'])){
  $oldval = $params['mavariable'];
}
$this->PopulateParams($params);
$params['mavariable'] = oldval;

à ne pas prendre tel quel, mais voici un moyen pour jongler entre valeur par défaut et valeur transmise par l'url qui doit rester "en l'état" dans son code
#13

Il ne faut modifier NI le core, NI les modules qui ne sont pas de toi. Question de sécurité. Quid après un upgrade ?

As-tu essayé de paginer directement depuis un template Smarty ?

Ce qui n'est pas idéal mais qui permet de faire faire au module certaines choses qu'il ne permet pas. Alors c'est pas idéal mais dans le contexte de modules tiers, c'est le mieux qu'on puisse faire sans modifier le code.

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.
#14

Bonjour et désolé de répondre avec autant de retard !!!

Alors voila, j'ai testé et re-testé dans tous les sens mais je ne suis pas arrivé à récupérer ma variable...
Donc j'ai fait 2 balises utilisateur qui font la liste des pages enfant et crées ma pagination.
La pagination est en js, mais comme je n'ai pas beaucoup d'article cela passe.
2 balises, car j'en ai une pour lister les pages catégorie et une autre pour lister les pages article.

Voila !

Encore merci à bess et heriquet pour leur aide et leurs conseilles.

Cordialement
#15

Tu as 2 balises du même module et tu n'arrives pas à récupérer une donnée d'une des 2 balises dans l'autre c'est bien ca ?

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.
#16

Non, non !!!

Mes 2 balises fonctionnent !

J'ai plus de problème !!!

J'expliquais juste dans mon message d'avant comment je m'en étais sortie !

Désolé si je ne suis pas claire...

Je ré-explique :

Je n'utilise plus le contenttype Page catégorie du module cataloger.
A la place j'ai créé 2 balises qui récupère les pages enfant de mes pages catégories.
1 blaise pour les pages enfant qui sont des catégories
1 balise pour les pages enfant qui sont des produits
Mes pages catégorie sont maintenant de type content.
Mes pages produit sont restées de type page article (contenttype du module cataloger)
Dans un gabrit (prévu pour les pages catégorie) je crée un bloc de contenu oneline me permettant d'appeler une balise (en fonction des pages enfant catégorie ou produit).
Les 2 balises font plus ou moins le même travail, afficher un liste des pages enfant et créer une pagination.
Si il n'y a pas de pages enfant, la balise affiche le contenu de la page.
Et tous cela fonctionne !!!

Encore désolé si mon message précédent n'était pas très clair.

Cordialement
#17

Ok ok alors parfait Smile.

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.
Sujet fermé


Atteindre :


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