Rediriger l'utilisateur après la connexion


9

Je voulais rediriger l'utilisateur vers la page "Accueil" au lieu de la page "Mon compte" après la connexion, et j'ai réussi à y parvenir en utilisant

<customer_login>

un événement.

Mais j'ai également été redirigé vers la page d'accueil pendant que je me connecte depuis la page de paiement que je ne veux pas.

Voici ma fonction d'observateur

public function setRedirectOnLogin(){
    $session = Mage::getSingleton('customer/session');
    if (strpos($session->getBeforeAuthUrl(), 'checkout') === false)
        $session->setAfterAuthUrl(Mage::getBaseUrl());
    $session->setBeforeAuthUrl('');

}

Quelqu'un peut-il s'il vous plaît guider comment puis-je empêcher l'utilisateur de le rediriger vers la page d'accueil après la connexion à partir de la page de paiement?

Merci.

Réponses:


11

Merci les gars.

ci-dessous est la fonction d'observateur qui a fonctionné pour moi

 public function setRedirectOnLogin(){
        $session = Mage::getSingleton('customer/session');
        if (strpos(Mage::helper('core/http')->getHttpReferer(), 'checkout') === false)
            $session->setAfterAuthUrl(Mage::getBaseUrl());  
        else             
            $session->setAfterAuthUrl(Mage::helper('core/http')->getHttpReferer());

        $session->setBeforeAuthUrl('');
    }

Où est-ce ?
Pratik

Dois-je le placer en CSS? Quel fichier voulez-vous dire?
Pratik

7

Vous devez d'abord modifier la configuration de votre client:

entrez la description de l'image ici

Utilisez ensuite un referrerparamètre sur le formulaire. Par exemple

<form action="<?php
    echo $this->getUrl(
        'customer/account/loginPost',
        array(
            'referer' =>
            // Encode the base url, or whatever URL we want to go to
            Mage::helper('core')->urlEncode(Mage::getBaseUrl())
        )
    ) ?>" method="post">

4

essaye ça

<?php Mage::getSingleton('customer/session')->setBeforeAuthUrl($this->getBaseUrl()); ?>

Où écrire ça?
Pratik

3

Juste pour résumer tous les commentaires ici:

Prenez un config.xml et enregistrez un événement pour customer_login dans la zone frontend comme ceci

<frontend>
    <events>
        <customer_login>
            <observers>
                <your_module>
                    <class>your_module/observer</class>
                    <method>customerLogin</method>
                </your_module>
            </observers>
        </customer_login>
    </events>
</frontend>

Après cela, vous devez implémenter cette méthode d'observateur pour modifier l'URL "après l'authentification" de la session client. Cette variable sera utilisée dans le AccountController du client pour vérifier où rediriger après la connexion.

public function customerLogin($observer)
{
    $session = Mage::getSingleton('customer/session');
    if (strpos(Mage::helper('core/http')->getHttpReferer(), 'checkout') === false) {
        $session->setAfterAuthUrl(Mage::getBaseUrl());
    } else {
        $session->setAfterAuthUrl(Mage::helper('core/http')->getHttpReferer());
    }

    $session->setBeforeAuthUrl('');
}

2

Vous pouvez utiliser Mage::helper('core/http')->getHttpReferer()dans la condition que vous avez déjà pour voir si le référent est votre page de paiement et agir en conséquence.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.