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.

Solution logicielle Trimantra
la source

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('');
    }
Solution logicielle Trimantra
la source
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">
Steve Robbins
la source
4

essaye ça

<?php Mage::getSingleton('customer/session')->setBeforeAuthUrl($this->getBaseUrl()); ?>
Deepak Mallah
la source
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('');
}
Matthias Kleine
la source
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.

mbalparda
la source