¿Hay una manera de comprobar si un cliente invitado ha suscrito al boletín de noticias, en esa sesión en particular?

magento.stackexchange https://magento.stackexchange.com/questions/4954

Pregunta

Tengo que ocultar el formulario de suscripción al boletín de clientes que han suscrito.

Para registrado y loggedin cliente soy capaz de comprobar el estado de la suscripción utilizando el método siguiente:

$customerSession = Mage::getSingleton("customer/session");
$email = $customerSession->getCustomer()->getEmail();
$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
    $status = $subscriber->isSubscribed(); // status = 1 if subscribed.

Pero quiero ocultarlo para los clientes de invitados también (obviamente para esa sesión en particular solo).

¿Cómo podría hacer eso? ¿Alguien puede ayudar?

¿Fue útil?

Solución

Su config.xml:

<config>
    <frontend>
        <events>
            <newsletter_subscriber_save_after>
                <observers>
                    <your_module_node>
                        <class>Your_Module_Model_Observer</class>
                        <method>newsletterSubscriberSaveAfter</method>
                    </your_module_node>
                </observers>
            </newsletter_subscriber_save_after>
        </events>
    </frontend>
    /*another config nodes*/
</config>

Su Observer.php:

public function newsletterSubscriberSaveAfter($observer)
{
    $subscription = $observer->getEvent()->getSubscriber();
    if ($subscription->subscriber_email) {
        Mage::getSingleton('customer/session')->setSubscribed(true);
    }
}

Plantilla /app/design/frontend/base/default/template/newsletter/subscribe.phtml:

<?php if (!Mage::getSingleton('customer/session')->getSubscribed()): ?>
<!--here is original html -->
<?php endif; ?>

Otros consejos

Anular la Mage_Newsletter_SubscriberController controlador de abonado y en el método newAction(), cuando el cliente se suscribe simplemente añadir una indicación a la sesión.
Luego, en la plantilla de bloque de noticias, simplemente comprobar si se ha establecido que la bandera de la sesión.

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