Désactiver la redirection après l'ajout du produit au panier


8

Lorsque j'ajoute quelque chose du categoryau basket/cartil me redirige vers le basket/cart.

Après la recherche, j'ai découvert que je pouvais désactiver cette fonctionnalité dans le système d'administration via

Configuration > Sales | Checkout > After Adding a Product Redirect to Shopping Cart

Il redirige maintenant vers la page d'accueil. Je ne sais pas si c'est un bug dans la redirection?


Non, ce n'est pas le cas avec la configuration par défaut de Magento. Il fonctionne parfaitement lorsqu'il est ajouté à partir de la page de détail ou de la page de liste. Avez-vous modifié le code ou à partir de quelle page essayez-vous de le faire?
Dexter

pouvez-vous vérifier le fichier log files.system.log ou exception.log
Pradeep Sanku

J'utilise un thème tiers. J'ai fait quelques modifications dans le frontend / default / {theme_name} /template/product/list.phtml. La page se charge correctement lorsque je clique dessus dans le menu.
user9252

j'ai configuré ce paramètre, donc après l'ajout au panier, cliquez sur c'est de me rediriger vers la même page ..
Sarfaraj Sipai

Réponses:


8

Si vous regardez dans le contrôleur du chariot, app/code/core/Mage/Checkout/controllers/CartController.phpvous trouverez la fonction _goBack. C'est là que l'URL de retour est décidée par Magento.

protected function _goBack()
{
    $returnUrl = $this->getRequest()->getParam('return_url');
    if ($returnUrl) {

        if (!$this->_isUrlInternal($returnUrl)) {
            throw new Mage_Exception('External urls redirect to "' . $returnUrl . '" denied!');
        }

        $this->_getSession()->getMessages(true);
        $this->getResponse()->setRedirect($returnUrl);
    } elseif (!Mage::getStoreConfig('checkout/cart/redirect_to_cart')
        && !$this->getRequest()->getParam('in_cart')
        && $backUrl = $this->_getRefererUrl()
    ) {
        $this->getResponse()->setRedirect($backUrl);
    } else {
        if (($this->getRequest()->getActionName() == 'add') && !$this->getRequest()->getParam('in_cart')) {
            $this->_getSession()->setContinueShoppingUrl($this->_getRefererUrl());
        }
        $this->_redirect('checkout/cart');
    }
    return $this;
}

La section que vous recherchez est l'appel à _getRefererUrlcela se produit lorsque vous ne définissez pas l'URL de retour en tant que paramètre et n'utilisez pas l'option de redirection vers le panier par défaut.

À l'intérieur de la fonction, _getRefererUrll'URL de référence est vérifiée pour voir s'il s'agit d'une URL interne, lorsqu'elle n'est pas interne que l'URL de base est utilisée.

Je dirais que votre URL de référence est externe ou qu'il y a un problème avec la vérification.

Jetez un œil à Mage_Core_Controller_Varien_Action::_isUrlInternaldéboguer si l'URL est interne ou non.

Le problème était que _isUrlInternal échouait en raison du port dans l'URL de base


Je suis très nouveau sur Magento et je n'ai jamais rien débogué auparavant à Magengto. Quel est le processus impliqué pour que je puisse déboguer cette URL
user9252

@ user9252 il y a plusieurs façons de faire cela, ce que je suggérerais pourrait être le plus simple serait simplement d'ajouter quelques var_dumps de variables dans la fonction pour voir ce qui se passe.
David Manners

J'ai mis un appel de débogage après $ returnUrl = $ this-> getRequest () -> getParam ('return_url'); et c'était vide, aucune suggestion.
user9252

1
J'utilise Bitnami et j'utilise les paramètres par défaut. Le paramètre par défaut est 192.168.1.20:80/magento . Dois-je supprimer le port?
user9252

1
J'ai supprimé le numéro de port: 80 de l'URL de base. Videz le cache. Il redirige maintenant vers la page de liste des catégories comme prévu.
user9252

4

En plus de la réponse de David-Manners, vous pouvez également avoir des problèmes avec votre web/unsecure/base_url& web/secure/base_urlêtre correctement configuré sans ports - mais votre application réelle vhost (apache / nginx) écoute sur un port autre que 80/443, par exemple lors de l'exécution derrière du vernis.

Cela se traduira par \Mage_Core_Helper_Url::getCurrentUrl, utilisé par exemple pour ajouter les paramètres de requête encodés en base64 - décodés et utilisés en _getRefererUrlayant le port «non par défaut» dans le cadre de l'URL. (par exemple http://www.domain.com:81/your-url.html )

En conséquence, Mage_Core_Controller_Varien_Action::_isUrlInternalrenvoie faux ...

Pour plus d'informations, voir
http://erikeng.se/post/magento-behind-varnish.html

Une solution propre et bonne est décrite dans
/server/318151/how-to-set-php-server-port-var-to-80-behind-varnish


1

Essayez de définir votre web/unsecure/base_url& web/secure/base_urlavec 127.0.0.1à la place de localhost. Pour moi, cela a fonctionné.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.