Pregunta

¿Es posible mostrar un mensaje en un cuadro emergente o una alerta en la página del carrito cuando un cliente está cerca del umbral de entrega gratuita, es decir?

"Gasta otros £5 y calificas para la entrega gratuita"

¿Fue útil?

Solución

Crea tu propio módulo.llamémoslo StackExchange_FreeShipping
Necesitará los siguientes archivos:

app/etc/modules/StackExchange_FreeShipping.xml - el archivo de declaración

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_FreeShipping>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Shipping />
            </depends>
        </StackExchange_FreeShipping>
    </modules>
</config>

app/code/local/StackExchange/FreeShipping/etc/config.xml - el archivo de configuración

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_FreeShipping>
            <version>0.0.1</version>
        </StackExchange_FreeShipping>
    </modules>
    <global>
        <helpers>
            <stackexchange_freeshipping>
                <class>StackExchange_FreeShipping_Helper</class>
            </stackexchange_freeshipping>
        </helpers>
        <models>
            <stackexchange_freeshipping>
                <class>StackExchange_FreeShipping_Model</class>
            </stackexchange_freeshipping>
        </models>
    </global>
    <frontend>
        <translate>
            <modules>
                <StackExchange_FreeShipping>
                    <files>
                        <default>StackExchange_FreeShipping.csv</default>
                    </files>
                </StackExchange_FreeShipping>
            </modules>
        </translate>
        <events>
            <controller_action_predispatch_checkout_cart_index>
                <observers>
                    <stackexchange_freeshipping>
                        <class>stackexchange_freeshipping/observer</class>
                        <method>checkFreeShipping</method>
                    </stackexchange_freeshipping>
                </observers>
            </controller_action_predispatch_checkout_cart_index>
        </events>
    </frontend>
</config>

app/code/local/StackExchange/FreeShipping/Model/Observer.php - el observador que comprueba si estás cerca del envío gratuito

<?php
class StackExchange_FreeShipping_Model_Observer 
{
    public function checkFreeShipping($observer) 
    {
        //if free shipping is not enabled, do nothing
        if (!Mage::getStoreConfig('carriers/freeshipping/active')) {
            return $this;
        }
        $quote = Mage::getSingleton('checkout/session')->getQuote();
        //if there are no products in the cart, again, do nothing
        if (count($quote->getAllItems()) == 0 ){
            return $this;
        }
        //get the quote subtotal
        $subtotal = $quote->getSubtotal();
        //get the free shipping
        $freeShippingValue = Mage::getStoreConfig('carriers/freeshipping/free_shipping_subtotal');
        //check if the cart is below the free shipping amount
        if ($freeShippingValue > $subtotal) {
            Mage::getSingleton('checkout/session')->addNotice(
                Mage::helper('stackexchange_freeshipping')->__(
                    'Your cart has the has the value of %s. In order to get free shipping you need to order for %s more',
                    '<span style="color:green">'.Mage::helper('core')->currency($subtotal, true, false).'</span>',
                    '<span style="color:red">'.Mage::helper('core')->currency($freeShippingValue - $subtotal, true, false).'</span>'
                )
            );
        }

    }
}

app/locale/en_US/StackExchange_FreeShipping.csv - el archivo de traducción.Puedes agregar esto para cada idioma que tengas:

"Your cart has the has the value of %s. In order to get free shipping you need to order for %s more","Your cart has the has the value of %s. In order to get free shipping you need to order for %s more"

Por supuesto cambia el texto si lo quieres diferente.
Limpia el caché y pruébalo.
Debería ver ahora en el carrito un mensaje de aviso encima de la mesa del carrito con el mensaje

Your cart has the has the value of 34$. In order to get free shipping you need to order for 15$ more.

Otros consejos

Al completar la respuesta de @marius, tiene que agregar el más ayudante, de lo contrario tendrá un error sin

aplicación / código / local / stackexchange / freeshipping / helper / data.php

<?php
class StackExchange_FreeShipping_Helper_Data extends Mage_Core_Helper_Abstract{

}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top