Deaktivieren Sie die Weiterleitung, nachdem das Produkt in den Warenkorb gelegt wurde

8

Wenn ich etwas von dem categoryzum hinzufüge, basket/cartleitet es mich zum weiter basket/cart.

Nach der Suche stellte ich fest, dass ich diese Funktionalität im Admin-System über aktivieren konnte

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

Es wird jetzt zur Startseite weitergeleitet. Ich weiß nicht, ob dies ein Fehler in der Weiterleitung ist.

user9252
quelle
Nein, das ist beim Standard-Magento-Setup nicht der Fall. Es funktioniert völlig einwandfrei, wenn es von der Detailseite oder der Listenseite hinzugefügt wird. Haben Sie Änderungen am Code vorgenommen oder von welcher Seite aus versuchen Sie dies?
Dexter
können Sie log files.system.log oder exception.log Datei überprüfen
Pradeep Sanku
Ich verwende ein Drittanbieter-Thema. Ich habe einige Änderungen im Frontend / default / {theme_name} /template/product/list.phtml vorgenommen. Die Seite wird in Ordnung geladen, wenn ich im Menü darauf klicke.
user9252
Ich habe diese Einstellung so konfiguriert, dass sie mich nach dem Hinzufügen zum Warenkorb auf dieselbe Seite
weiterleitet

Antworten:

8

Wenn Sie in die Wagensteuerung schauen, app/code/core/Mage/Checkout/controllers/CartController.phpfinden Sie die Funktion _goBack. Hier wird die Rückgabe-URL von Magento festgelegt.

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;
}

Der Abschnitt, nach dem Sie suchen, ist der Aufruf _getRefererUrldazu, wenn Sie die Rückgabe-URL nicht als Parameter festlegen und nicht die Standardoption zum Umleiten in den Warenkorb verwenden.

Innerhalb der Funktion wird _getRefererUrldie Referrer-URL überprüft, um festzustellen, ob es sich um eine interne URL handelt, wenn sie nicht intern ist, als die Basis-URL verwendet wird.

Ich würde vorschlagen, dass entweder Ihre Referrer-URL extern ist oder dass mit der Prüfung etwas nicht stimmt.

Schauen Sie sich an Mage_Core_Controller_Varien_Action::_isUrlInternal, um zu debuggen, ob die URL intern ist oder nicht.

Das Problem war, dass _isUrlInternal fehlschlug, weil der Port in der Basis-URL enthalten war

David Manners
quelle
Ich bin sehr neu in Magento und habe noch nie etwas in Magengto getestet. Was ist der Prozess, damit ich diese URL debuggen kann
user9252
@ user9252 Es gibt möglicherweise Möglichkeiten, wie Sie dies tun können. Ich würde vorschlagen, dass es am einfachsten ist, einfach ein paar var_dumps von Variablen in die Funktion einzufügen, um zu sehen, was los ist.
David Manners
Ich habe einen Debug-Aufruf nach $ returnUrl = $ this-> getRequest () -> getParam ('return_url'); und es war leer, irgendwelche Vorschläge.
user9252
1
Ich verwende Bitnami und verwende die Standardeinstellungen. Die Standardeinstellung ist 192.168.1.20:80/magento . Entferne ich den Port?
user9252
1
Ich habe die Portnummer: 80 aus der Basis-URL entfernt. Leere den Cache. Es wird nun wie geplant zur Kategorielistenseite zurückgeleitet.
user9252
4

Zusätzlich zur Antwort von David-Manieren haben Sie möglicherweise auch Probleme damit, dass Sie web/unsecure/base_url& web/secure/base_urlohne Ports richtig eingestellt sind - aber Ihr tatsächlicher App-Vhost (Apache / Nginx) überwacht einen anderen Port als 80/443, z. B. wenn Sie hinter Lack laufen.

Dies führt dazu \Mage_Core_Helper_Url::getCurrentUrl, dass z. B. zum Hinzufügen der base64-codierten Abfrageparameter verwendet wird - dekodiert und verwendet, indem _getRefererUrlder 'nicht standardmäßige' Port als Teil der URL verwendet wird. (zB http://www.domain.com:81/your-url.html )

Als Ergebnis wird Mage_Core_Controller_Varien_Action::_isUrlInternalfalse zurückgegeben ...

Weitere Informationen finden Sie unter
http://erikeng.se/post/magento-behind-varnish.html

Eine saubere und gute Lösung finden Sie unter
/server/318151/how-to-set-php-server-port-var-to-80-behind-varnish

Hartmut
quelle
1

Versuchen Sie, Ihr web/unsecure/base_url& web/secure/base_urlmit 127.0.0.1anstelle von zu setzen localhost. Bei mir hat es geklappt.

Fred K.
quelle