Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?

Empecher le changement de page sur 'add to wishlist'
(1 lecteur(s)) (1) Invité(s)
Aller en basPage: 1
SUJET:

Empecher le changement de page sur 'add to wishlist'

*
#28607
artatum
Fresh Boarder
Messages: 14
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Empecher le changement de page sur 'add to wishlist'

Il y a 1 Année, 11 Mois
Karma: 0  
Bonjour à tous

1) Je cherche à empêcher le changement de page lorsqu'on clique sur 'add to wishlist'. En effet on se retrouve à chaque fois sur 'My Wishlist' et on doit cliquer 'retour'. Deux changements de page à chaque ajout c'est deux de trop! Hélas mes recherches ne m'ont pas permis de comprendre comment ça marche, et où l'inhiber. (déjà le lien derrière 'add to wishlist est carrément psychédélique : il ne renvoie ni vers un fichier, ni vers un dossier existant... ) Dur de s'y retrouver tout seul. J'ai épluché tous les livres et les forums sans succès.

2) Et le top serait pour moi d'ouvrir la wishlist dans la sidebar de droite de la garder pendant la navigation sur le site, et souci ultime de la raffraichir lorsqu'on clique sur 'add to wishlist'

Tout ça pour quoi faire ? Je souhaite détourner la wishlist pour en faire une playlist MP3 avec un player JQuery. Je crée un site pour vendre ma musique et j'aimerais que le visiteur puisse selectionner des morceaux à la suite, qu'ils soient joués automatiquement et que l'utilisateur puisse faire 'add to cart' du morceau actuel qu'il écoute, ou des autres.
Je pense que je n'arriverais pas à empêcher un raffraichissement complet de la page si je veux actualiser la wihlist. Ce qui impliquerait AJAX... (Et retrouver la requête qui permet d'obtenir la wishlist n'est pas du gateau non plus...voir 1) 8-)
Un bête player en sidebar avec des boutons de player et des 'add to cart' et un 'add actual song to cart'. Voilà.

C'est juste pour être précis que j'explique tout ça, je me doute que vous n'allez pas me dire comment tout faire ici. Mais déjà le 1) et 2) sont carrément bloquants pour moi.


Merci de votre aide sur ces soucis...
 
L'administrateur a désactivé l'accès public en écriture.
#28644
Pyksel
Platinum Boarder
Messages: 1401
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin lapierredelune blog.magentoo.fr pyksel@live.fr Lieu: Nice Date anniversaire: 12/09

Re:Empecher le changement de page sur 'add to wishlist'

Il y a 1 Année, 11 Mois
Karma: 19  
Un petit tour sur le fonctionnement du modèle MVC t'aurais aidé à trouver la solution... Model View Controller...

Sa signifie que Magento utilise (entre guillemet) une url pour aller chercher un code. Par exemple : www.site.com/index.php/wishlist/index/add/product/56/

Signifie que Magento va chercher la fonction add du controller indexController dans le module Wishlist avec le parametre produit = 56...

Faut donc aller dans app/code/core/Mage/Wishlist/Controllers/indexConroler.php et chercher public function addAction() (on met toujours action aux fonctions...)

indexAction correspond à une action par défaut : www.site.com/index.php/wishlist/ par exmeple...

De là si on analyse le code on voit quoi ?

Il vérifie si l'user est connecté... sinon -> dégage !
Il vérifie si y a bien un id produit... sion->dégage !

Puis enfin :

Code :

$wishlist->addNewItem($product->getId());
            Mage::dispatchEvent('wishlist_add_product', array('wishlist'=>$wishlist, 'product'=>$product));

            if ($referer = $session->getBeforeWishlistUrl()) {
                $session->setBeforeWishlistUrl(null);
            }
            else {
                $referer = $this->_getRefererUrl();
            }
            $message = $this->__('%1$s was successfully added to your wishlist. Click <a href="%2$s">here</a> to continue shopping', $product->getName(), $referer);
            $session->addSuccess($message);



Bon en même temps c'est pas du français ^^ mais c'est assez simple quand on a le core de magento dans la peau (desolé pour le jeu de mot ^^)

Y a donc un evenement dessus... Le dispatch qui va passer tout ca à un Model (model c'est tout ce qui traite les données... Controlleur qui contrôle les actions et View pour afficher le tout (frontend)... Bref...) - C'est du Magento pur et dur et quelle joie de coder ça (moi j'adore en tout cas...)

C'est donc :
Code :

Mage::dispatchEvent('wishlist_add_product', array('wishlist'=>$wishlist, 'product'=>$product));
qui ajoute dans la base l'objet à la wishlist... On va pas decortiquer le fonctionnement. Faut juste zapper d'aller à l'url (visuellement) pour effectuer l'opération et empecher une éventuelle redirection qui se produit aprés le dispatch...

Une première solution consite à modifier cette fonction de la classe. Voir comment overrider une fonction d'un controller (config.xml d'un nouveau module)

(voir ici : www.magentocommerce.com/wiki/how_to_overload_a_controller)

Oui mais c'est pas tout... un peu d'ajax evidement... car si on tape par exemple :
www.site.com/index.php/wishlist/index/add/product/56/ (qui correspond au lien... ben on quitte la page)...

Faut donc trouver ce satané lien et l'ajaxé (y a prototype dans Magento qui a un ajax pas trop mauvais ;)) - Je te laisse le soin du code ajax ;)

Donc on a quitté le controller, direction le view... (la vue)

App/design/frontend/[package]/[theme]

génial magento pour ça. On sait où est tout !!!

Mais là on va pas direction wishlist... mais catalog/product/ vu que c'est ce moduel qui affiche ce fameux lien...

dans list et view notament

list.phtml ca donne :

Code :

<a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-cart"><?php echo $this->__('Add to Wishlist') ?></a>


C'est ligne 74 de ce fichier dans le théme par défault de magento... Donc si on a fait le choix d'overrider la classe plus haut magento ira directement "taper" dans notre nouvelle classe qu'on aura adaptée à notre... Ajax...

Ajax qu'on placera pour traiter cet url au lieu de bêtement aller vers une autre page...

Bon je me suis pas relu, j'ai peut être commis une ou deux erreur, mais c'est ainsi que tu va t'y retrouver dans magento...
 
L'administrateur a désactivé l'accès public en écriture.
#28657
artatum
Fresh Boarder
Messages: 14
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Empecher le changement de page sur 'add to wishlist'

Il y a 1 Année, 11 Mois
Karma: 0  
D'abord un grand, un immense merci. Pour la rapidité et la longueur de ta réponse. Je commençais à désesperer.
Pour commencer, le MVC, j'en bouffe toute la journée : j'ai acheté les 3 ou 4 bouquins (apress) existant sur Magento, et je me tape Zend au petit dej.
Mais je patauge.

1) Je réponds avant de mettre en pratique ton post car un point m'échappe (et m'effraie)
pourquoi parle-tu d'ajaxer quelquechose ? Si je veux empecher la redirection, ça ne finira pas par une mise en commentaire de qques lignes ? En plus Ajax, j'ai vaguement pigé mais pas vraiment programmé. Je pensais que ça servait seulement à éviter les raffraichissements complets de page. Pourrais-tu m'éclairer et me guider si sommairement si je dois passer par là, car ça touche le point central de mon probleme...
J'espère qu'un jour moi aussi je me régalerai comme toi de coder sur Magento, mais j'ai un peu de mal à donner la date de ce jour, malgré une certaine expérience de la programmation, y compris objet.


1) Comment as-tu fais pour apprendre ? Livres ? Stages?

En plus, mis-à-part ta réponse, personne ne vous dépanne en général sur Magento. J'ai posté plusieurs fois ici, plusieurs fois sur le forum Magento us, et c'est la première réponse que j'ai (j'ai sorti le champagne).
J'ai même signalé un bug sur la 1.4 resté sans réponse (impossibilité d'ajouter des produits downloadable). On dirait que tout le monde a déserté le forum us, y compris les développeurs. Il suffit de regarder les posts avec 0 vues 0 réponse pour avoir une envie pressante de retourner sur Prestashop.)(Mais c'est encore pire la-bas!). Pourtant il me semble que c'est un énorme bug...
Encore merci pour cette réponse très complète et détaillée. Ca me fait chaud au coeur de ne plus être tout seul...
Bon je m'y colle tout de suite.
@+
 
L'administrateur a désactivé l'accès public en écriture.
#28662
Pyksel
Platinum Boarder
Messages: 1401
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin lapierredelune blog.magentoo.fr pyksel@live.fr Lieu: Nice Date anniversaire: 12/09

Re:Empecher le changement de page sur 'add to wishlist'

Il y a 1 Année, 11 Mois
Karma: 19  
En fait ajaxer car là tu as en l'occurence pour ton ajout à la liste la necessité de passé par le module wishlist. donc de changer de page... Evidement si tu override la fontion d'ajout t'as juste à faire une redirection vers la page qui à appelé le module... Mais bon ca fait un peu lours de devoir changer de page pour la même page. Donc Ajax n'est pas obligatoire mais juste conseillé...

Comment j'ai appris ? Je suis autodidacte. Webdesigner / Developpeur depuis 15 ans (d'abords les CMS). et 1,5 sur magento... Au début je pataugeais comme tout le monde avec Magento. Puis j'ai decidé de me créer un module de tracking visiteurs parceque le suivi des users en ligne de magento était sommaire pour moi. Et à force de pas lacher, d'étudier, et de me taper les lignes de codes de Magento, j'ai enfin eu le declic. (A ca ajoutes l'immense aide que j'ai eu de ce forum de certains membres qui se reconnaîtront (Gabriel, Botuik Circus, Olixelle, et beaucoup d'autres dont je m'excuse de pas les citer ;)).

Quand au non réponse que tu as... Ben je sais pas. La communauté est active, mais pas tous les developpeur Magento du monde trainent sur les forums. Ou alors parfois on sait tous que la question à déjà été posée 100000 fois...

Je lis quasiment tous les posts de ce forum. Et crois moi, des messages sans réponses (et solutions) c'est rare. Parfois la question est mal forumulée ou trop dépendante d'une configuration. Donc difficiel d'aider sans mettre les mains dans le serveur et/ou le code.

Chaud au coeur ? J'ai plus qu'a créer les Magento du Coeur... ;)
 
L'administrateur a désactivé l'accès public en écriture.
#28677
artatum
Fresh Boarder
Messages: 14
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Empecher le changement de page sur 'add to wishlist'

Il y a 1 Année, 11 Mois
Karma: 0  
Mais à propos d'Ajax sous Magento par où attaquer ? Je n'ai pas trouvé grand chose pour m'aider sur le web, et aucun livre n'en parle. Tu pourrais me mettre sur la voie? Dans quels fichiers on en trouve de l'ajax dans Magento ?
D'après mes souvenirs je vais devoir executer une requete XMLHttprequest qui va effectuer l'action add du product. Mais le retour ? Comment raffraichir seule la wishlist après l'ajout? Ne devrais-je pas l'ajaxer elle-aussi d'une façon ou d'une autre ?
 
L'administrateur a désactivé l'accès public en écriture.
#28847
artatum
Fresh Boarder
Messages: 14
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Empecher le changement de page sur 'add to wishlist'

Il y a 1 Année, 10 Mois
Karma: 0  
Allo?
 
L'administrateur a désactivé l'accès public en écriture.
#28851
Pyksel
Platinum Boarder
Messages: 1401
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin lapierredelune blog.magentoo.fr pyksel@live.fr Lieu: Nice Date anniversaire: 12/09

Re:Empecher le changement de page sur 'add to wishlist'

Il y a 1 Année, 10 Mois
Karma: 19  
Ben en fait, je vois pas comment t'expliquer tout les fondement de magento ;)

Y a pas mal d'ajax dans le code de magento (notament un ajax simple sur le block de la newsletter (voir template)). Il te suffit ensuite de remonter le code pour arriver à voir l'implication d'ajax au sein de Magento...

Là, la voie est toute tracé...
 
L'administrateur a désactivé l'accès public en écriture.
Revenir en hautPage: 1
Modérateur: admin, Narno, Gabriiiel, CaPiT