[RESOLU]Problème action dans module + réécriture d'URL

Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
#1
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 2.1.3
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

J'ai un problème avec la réécriture d'URL.

J'ai développé un module catalogue.

J'ai mon fichier action.default.php qui m'affiche la liste des catégories.
J'ai ensuite un fichier action.category.php qui affiche la liste des produits d'une catégorie.
Puis j'ai un fichier action.product.php qui affiche le détail des produits.

Dans les fichiers action.default et action.category, je crée les url avec la fonction create_url.

Dans le fichier action.default je donne à la fonction create_url l'action category et dans le fichier action.category je donne à la fonction create_url l'action product.

Sur le front de mon site, de action default à action category j'ai pas de problème.
Par contre de l'action category à l'action product, le paramètre action reste sur category ce qui fait que je n'ai pas le détail des mes produits...

La construction des url est pourtant faite de la même manière...

Lorsque je désactive la réécriture d'URL, cela fonctionne correctement et l'action product est bien la...

Si quelqu'un à une solution ou des idées ?

Cordialement

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



Bonjour,

J'ai un problème avec la réécriture d'URL.

J'ai développé un module catalogue.

J'ai mon fichier action.default.php qui m'affiche la liste des catégories.
J'ai ensuite un fichier action.category.php qui affiche la liste des produits d'une catégorie.
Puis j'ai un fichier action.product.php qui affiche le détail des produits.

Dans les fichiers action.default et action.category, je crée les url avec la fonction create_url.

Dans le fichier action.default je donne à la fonction create_url l'action category et dans le fichier action.category je donne à la fonction create_url l'action product.

Sur le front de mon site, de action default à action category j'ai pas de problème.
Par contre de l'action category à l'action product, le paramètre action reste sur category ce qui fait que je n'ai pas le détail des mes produits...

La construction des url est pourtant faite de la même manière...

Lorsque je désactive la réécriture d'URL, cela fonctionne correctement et l'action product est bien la...

Si quelqu'un à une solution ou des idées ?

Cordialement

bobjo
#2
Bonjour,
Sans avoir étudié ton problème, n'y aurait-il pas une relation avec le passage des paramètres sous url_rewriting comme dans le post avec CGBlog : http://www.cmsmadesimple.fr/forum/viewto...481#p45481.
Ici, tu devrais utiliser {cms_module_hint module=ModuleName paramname=value ...} puisque ce n'est pas un module CGE.
#2
Bonjour,
Sans avoir étudié ton problème, n'y aurait-il pas une relation avec le passage des paramètres sous url_rewriting comme dans le post avec CGBlog : http://www.cmsmadesimple.fr/forum/viewto...481#p45481.
Ici, tu devrais utiliser {cms_module_hint module=ModuleName paramname=value ...} puisque ce n'est pas un module CGE.
#3
Bonjour,

Merci de me répondre.

J'ai déja passé les paramètres de mon module dans la balise cms_module_hint.
Mon module faisait une réécriture d'URL mais je perdais les informations liées aux gabarits donc je les passaient dans l'URL.
Mais cette réécriture d'URL n'était pas "jolie". Donc j'ai repris la réécriture d'URL afin d'avoir :
returneid/catid/alias catégorie (pour les catégories)
returnid/catid/prodiutid/alias produit (pour les produits)

Comme je le dis plus haut pour les catégories cela fonctionne, mais pour afficher le détail des produits il semble que je perde l'action product(action pour le détail des produits).

Cordialement

bobjo
#3
Bonjour,

Merci de me répondre.

J'ai déja passé les paramètres de mon module dans la balise cms_module_hint.
Mon module faisait une réécriture d'URL mais je perdais les informations liées aux gabarits donc je les passaient dans l'URL.
Mais cette réécriture d'URL n'était pas "jolie". Donc j'ai repris la réécriture d'URL afin d'avoir :
returneid/catid/alias catégorie (pour les catégories)
returnid/catid/prodiutid/alias produit (pour les produits)

Comme je le dis plus haut pour les catégories cela fonctionne, mais pour afficher le détail des produits il semble que je perde l'action product(action pour le détail des produits).

Cordialement

bobjo
#4
Bonjour,

J'ai trouvé d'où venait le problème.

Mes réécritures d'URL été trop identiques. Du coups en modifiant l'ordre des gabarits dans la fonction InitializeFrontend ça fonctionne.

Je met un exemple :
Avant :
Code :
[== Indéfini ==]
$this->RegisterRoute('/(?P<returnid>[0-9]+)\/(?P<catid>[0-9]+)\/(?P<junk>.*?)$/',array('action'=>'category'));
$this->RegisterRoute('/(?P<returnid>[0-9]+)\/(?P<catid>[0-9]+)\/(?P<prodid>[0-9]+)\/(?P<junk>.*?)$/',array('action'=>'product'));

Après :
Code :
[== Indéfini ==]
$this->RegisterRoute('/(?P<returnid>[0-9]+)\/(?P<catid>[0-9]+)\/(?P<prodid>[0-9]+)\/(?P<junk>.*?)$/',array('action'=>'product'));
$this->RegisterRoute('/(?P<returnid>[0-9]+)\/(?P<catid>[0-9]+)\/(?P<junk>.*?)$/',array('action'=>'category'));

Voilà !

C'était pas grand chose mais il fallait le savoir

Cordialement

bobjo
#4
Bonjour,

J'ai trouvé d'où venait le problème.

Mes réécritures d'URL été trop identiques. Du coups en modifiant l'ordre des gabarits dans la fonction InitializeFrontend ça fonctionne.

Je met un exemple :
Avant :
Code :
[== Indéfini ==]
$this->RegisterRoute('/(?P<returnid>[0-9]+)\/(?P<catid>[0-9]+)\/(?P<junk>.*?)$/',array('action'=>'category'));
$this->RegisterRoute('/(?P<returnid>[0-9]+)\/(?P<catid>[0-9]+)\/(?P<prodid>[0-9]+)\/(?P<junk>.*?)$/',array('action'=>'product'));

Après :
Code :
[== Indéfini ==]
$this->RegisterRoute('/(?P<returnid>[0-9]+)\/(?P<catid>[0-9]+)\/(?P<prodid>[0-9]+)\/(?P<junk>.*?)$/',array('action'=>'product'));
$this->RegisterRoute('/(?P<returnid>[0-9]+)\/(?P<catid>[0-9]+)\/(?P<junk>.*?)$/',array('action'=>'category'));

Voilà !

C'était pas grand chose mais il fallait le savoir

Cordialement

bobjo


Atteindre :


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