Scritto da il

Molte persone vogliono disabilitare il pop-up che si apre quando si aggiunge un prodotto al carrello con Ajax, e invece vogliono essere reindirizzati alla Pagina di Riepilogo del carrello. Ho visto molti post che danno delle istruzioni per disabilitare il pop-up Aggiungi al Carrello nel modulo di Blocco del Carrello, ma funziona solo con Prestashop 1.6.

In Prestashop 1.7, la feature “Reindirizza dopo aver aggiunto il prodotto al carrello” non esiste più e, in questo caso, potreste voler disabilitare la feature Ajax Cart che appartiene al modulo del Shopping Cart (Carrello degli Acquisti). Purtroppo, se disabilitate questa funzione, il pop-up non si aprirà, ma il vostro cliente non sarà reindirizzato alla pagina di Riepilogo del Carrello.

In questo tutorial, vi mostrerò come disabilitare il pop-up “Aggiungi al carrello” Prestashop e come essere reindirizzati al Riepilogo del Carrello in Prestashop 1.7.

Come reindirizzare il cliente alla pagina di Riepilogo del Carrello dopo aver cliccato "Aggiungi al Carrello"?

Nella 1.6, l’opzione era sotto Preferenze -> Prodotto(Reindirizza dopo aver aggiunto il prodotto al carrello). Questa funzione è stata rimossa da Prestashop 1.7. Non so perché ma sono sicuro che a molti manchi tantissimo :)

Primo modo

Con questo metodo, proveremo a modificare il file /your- website/modules/ps_shoppingcart/ps_shoppingcart.js. Da qualche parte vicino alla riga 49 troverete un codice come questo:

if (resp.modal) {
            showModal(resp.modal);
}

showModal(resp.modal) è il codice sorgente che fa aprire il popup. Cambiatelo per disabilitare il popup e reindirizzare i clienti alla pagina di Riepilogo del Carrello:

if (resp.modal) {
            window.location.replace(prestashop.urls.pages.cart);
}

Cancellate le cache del browser e del sito per vedere i risultati.

Funziona!

Ma...aspettate! Questo trucco funziona se i visitatori non hanno fatto l'accesso. Comunque, se aggiungono dei prodotti quando hanno già fatto l’accesso nel loro account, saranno reindirizzati alla home invece che al Riepilogo del Carrello.

Eccolo qui

Abbiamo sviluppato un Prestashop Moduli chiamato ChargeMe che vi permetterà di vendere i prodotti della sottoscrizione (riviste, adesioni, libri, ecc.) via Paypal.

Vogliamo solo 1 prodotto di sottoscrizione nel carrello quando si va alla cassa, quindi è necessario il reindirizzamento automatico quando si clicca sul tasto Iscriviti. Poi aggiungiamo una funzione nel nostro file js:

prestashop.on('updateCart',function (event) {
						...
					        $.post(ajax_url, requestData, null, 'json').then(function (resp) {
						      	location.href = cart_url;
					        }).fail(function (resp) {
					          	prestashop.emit('handleError', {eventType: 'updateShoppingCart', resp: resp});
					        });
				      });

Come vedete, invece di reindirizzare al prestashop.urls.pages.cart, vogliamo reindirizzarlo al cart_url. Questo valore è predefinito. E non importa se hanno effettuato l’accesso o meno, il modulo li reindirizza al riepilogo del carrello immediatamente.

Cosa dovrete fare adesso? Dovremo aggiungere il nostro valore al vostro sito. Aprite il file yourwebsite/modules/ ps_shoppingcart/ps_shoppingcart.php per aggiungere qualcosa. Vedrete:

public function hookHeader()
    {
        if (Configuration::isCatalogMode()) {
            return;
        }

        if (Configuration::get('PS_BLOCK_CART_AJAX')) {
            $this->context->controller->registerJavascript('modules-shoppingcart', 'modules/'.$this->name.'/ps_shoppingcart.js', ['position' => 'bottom', 'priority' => 150]);
        }
    }

Modificatela in:

public function hookHeader()
    {
        if (Configuration::isCatalogMode()) {
            return;
        }

        if (Configuration::get('PS_BLOCK_CART_AJAX')) {
            $this->context->controller->registerJavascript('modules-shoppingcart', 'modules/'.$this->name.'/ps_shoppingcart.js', ['position' => 'bottom', 'priority' => 150]);
        }
    	$this->smarty->assign(array(
            'cart_url' => $this->getCartSummaryURL(),
        ));

        return $this->fetch('module:ps_shoppingcart/header.tpl');
    }

Abbiamo attribuito un nome al nuovo file, e ora dobbiamo crearlo come /yourwebsite/modules/ ps_shoppingcart/header.tpl. Mettete questo contenuto dentro questo file:

<script type="text/javascript">
	{if isset($cart_url)}
		var cart_url = '{$cart_url}';
	{/if}
</script>

Qual è la differenza? Sapete, prestashop.urls.pages.cart non è un valore predefinito. Se il cliente fa il login, prestashop.urls.pages.cart significa homepage, o no, significa pagina del Carrello. Abbiamo bisogno di usare il nostro valore.

Ora possiamo modificare il file /your-website/modules/ ps_shoppingcart/ps_shoppingcart.js usando il nostro valore:

if (resp.modal) {
           location.href = cart_url;
}

Sarebbe meglio se avessimo un’opzione per abilitare o disabilitare questa funzione. Ad ogni modo, spero che questo trucco vi dia un po’ di valore.

Va bene, gente. Non vedo l’ora di leggere i vostri commenti qui sotto. Ci vediamo settimana prossima con altri guida Prestashop. Statemi bene.