PrestaShop 1.7 ha tolto la possibilità di disabilitare il Pop-Up del carrello e di reindirizzare i clienti direttamente alla pagina di Checkout. Nella maggioranza dei casi il Pop-Up che offre la possibilità di continuare gli acquisti o procedere con l’ordine, è la scelta migliore. Ci sono però tipologie di e-commerce e situazioni particolari in cui dopo il click su “Aggiungi al Carrello” è consigliabile reindirizzare il cliente alla pagina di Checkout. È comunque possibile eseguire delle semplici modifiche per aggirare il problema.
Per indirizzare direttamente nella pagina di Checkout senza visualizzare quindi il Pop-Up del carrello come facevamo con PrestaShop 1.6, dovremo apportare una piccola modifica al modulo Carrello di PrestaShop (ps_shoppingcart). La prima cosa da fare e assicurarsi che l’opzione AJAX sia attiva.
Modificare il file ps_shoppingcart.js
Nella cartella del modulo (/modules/ps_shoppingcart) troviamo il file ps_shoppingcart.js sarà, cerchiamo nel file il seguente codice:
if (resp.modal) {
showModal(resp.modal);
}
Questo è il codice JS che richiama appunto il Pop-Up, sarà quindi necessario modificarlo come segue:
if (resp.modal) {
window.location.replace('/carrello?action=show');
}
Il file modificato sarà da posizionare poi in /themes/NOSTROTEMA/modules/ps_shoppingcart (così da non venire annullata dagli aggiornamento futuri), se la cartella non è presente andremo a crearla e inseriremo il nostro ps_shoppingcart.js modificato, se la cartella, se è presente e presenta già un file ps_shoppingcart.js andrà modificato questo file. Sarà necessario cancellare la Cache di PrestaShop e del browser. Con questa semplice modifica abbiamo creato un semplice override del modulo che reindirizzerà il nostro cliente direttamente alla procedura di Checkout.
[AdSense-A]
Questa soluzione non è pulita e ha dei limiti, se il sito è in multi-lingua, l’url del carrello cambia, per ovviare a questo problema è necessario effettuare altre modifiche, la prima modifica riguarda il file /modules/ps_shoppingcart/ps_shoppingcart.php dovremo editarlo e modificare il codice seguente:
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]);
}
}
nel seguente modo:
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->display(__FILE__, 'cart_header.tpl');
}
Sarà poi necessario creare il seguente file: /modules/ps_shoppingcart/views/templates/hook/cart_header.tpl contenete il seguente codice:
<script type="text/javascript">
{if isset($cart_url)}
var cart_url = '{$cart_url}';
{/if}
</script>
In questo modo URL sarà sempre quello giusto, purtroppo così saremo costretti a ripetere ad ogni aggiornamento del modulo, l’operazione.
Per. Ind. Loris Modena Senior Developer e CEO di Arte e Informatica Web Agency di Roma partner PrestaShop che tramite il brand Tecnoacquisti.com® sviluppa moduli PrestaShop, servizi e assistenza dedicata al mondo del commercio elettronico.