Disabilita il reindirizzamento dopo l'aggiunta del prodotto al carrello


8

Quando aggiungo qualcosa da a categorya basket/cart, mi reindirizza a basket/cart.

Dopo aver cercato, ho scoperto che potevo attivare questa funzionalità nel sistema di amministrazione tramite

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

Ora reindirizza alla Home page. Non so se questo è un bug nel reindirizzamento?


No, non è così con l'installazione di Magento predefinita. Funziona perfettamente se aggiunto dalla pagina dei dettagli o dalla pagina di elenco. Hai apportato modifiche al codice o da quale pagina stai provando a farlo?
— Dexter,

puoi controllare il file files.system.log o exception.log
— Pradeep Sanku,

Sto usando un tema di terze parti. Ho apportato alcune modifiche al frontend / default / {theme_name} /template/product/list.phtml. La pagina si carica quando faccio clic su di essa dal menu.
— user9252,

ho configurato questa impostazione, quindi dopo aggiungi al carrello fai clic su mi reindirizza alla stessa pagina ..
— Sarfaraj Sipai

Risposte:


8

Se guardi nel controller del carrello app/code/core/Mage/Checkout/controllers/CartController.phptroverai la funzione _goBack. È qui che l'URL di ritorno è deciso da 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 sezione che stai cercando è la chiamata a _getRefererUrlquesto accade quando non si imposta l'URL di ritorno come parametro e non si utilizza l'opzione di reindirizzamento predefinito al carrello.

All'interno della funzione _getRefererUrlviene verificato l'URL di riferimento per vedere se si tratta di un URL interno, quando non è interno rispetto all'URL di base.

Suggerirei che l'URL del tuo referrer sia esterno o che ci sia qualcosa di sbagliato nel controllo.

Dai un'occhiata al Mage_Core_Controller_Varien_Action::_isUrlInternaldebug se l'URL è interno o meno.

Il problema era che _isUrlInternal non funzionava a causa della porta nell'URL di base


Sono molto nuovo a Magento e non ho mai eseguito il debug di nulla a Magengto. Qual è il processo coinvolto in modo che io possa eseguire il debug di questo URL
— user9252

@utente9252 ci sono molti modi in cui potresti fare questo, quello che suggerirei potrebbe essere il più semplice sarebbe semplicemente aggiungere alcuni var_dumps di variabili nella funzione per vedere cosa sta succedendo.
— David Manners,

Ho inserito una chiamata di debug dopo $ returnUrl = $ this-> getRequest () -> getParam ('return_url'); ed era vuoto, eventuali suggerimenti.
— user9252,

1
Sto usando Bitnami e sto usando le impostazioni predefinite. L'impostazione predefinita è 192.168.1.20:80/magento . Rimuovo la porta?
— user9252,

1
Ho rimosso il numero di porta: 80 dall'URL di base. Svuota la cache. Ora reindirizza nuovamente alla pagina dell'elenco delle categorie come pianificato.
— user9252,

4

Oltre alla risposta di David-Manners, anche tu potresti avere problemi con il tuo web/unsecure/base_url& web/secure/base_urlessere impostato correttamente senza porte - ma il tuo vhost app (apache / nginx) in ascolto su una porta diversa da 80/443, ad esempio quando corri dietro la vernice.

Ciò si tradurrà in \Mage_Core_Helper_Url::getCurrentUrl, utilizzato ad esempio per aggiungere i parametri di query codificati in base64 - decodificati e utilizzati _getRefererUrlavendo la porta "non predefinita" come parte dell'URL. (ad es. http://www.domain.com:81/your-url.html )

Di conseguenza Mage_Core_Controller_Varien_Action::_isUrlInternalrestituisce false ...

Per ulteriori riferimenti, consultare
http://erikeng.se/post/magento-behind-varnish.html

Una soluzione pulita e buona è descritta in
/server/318151/how-to-set-php-server-port-var-to-80-behind-varnish


1

Prova a impostare il tuo web/unsecure/base_urle web/secure/base_urlcon 127.0.0.1al posto di localhost. Per me ha funzionato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.