我希望在Magento当前的网站之前获取网址,并检查是否是购物车和结帐页面。例如,现在我在“我的帐户”页面中,我想检查“我的帐户”中的访问页面是否为“购物车”页面。
我尝试添加此功能但不起作用,因为我的上一个URL是登录,而不是 购物车
$mail->addReplyTo
更新:
我找到了一个解决方案,如果在购物车中存在产品,则在注册后重定向,但是有问题,在结账时完成注册后,结算字段不完整且用户未登录。任何人吗?
新更新:
这是我在登录后重定向所做的,它是完美的工作,我需要为Register做同样的事情。 Register的问题是因为lastUrl在这里登录。任何人?有什么想法?
public function customerRegistration(Varien_Event_Observer $observer)
{
$lastUrl = Mage::getSingleton('core/session')->getLastUrl();
if(preg_match("#onestepcheckout/index#", $lastUrl)){
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('onestepcheckout/index'));
Mage::app()->getResponse()->sendResponse();
exit;
}
else{
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('customer/account'));
Mage::app()->getResponse()->sendResponse();
exit;
}
}
更新 一位优秀的开发人员告诉我,这是一种方法。要在注册页面之前添加事件,请在注册完成后添加事件观察器,然后检查必要的内容。但我不知道这样做,也许有人可以帮我这个?谢谢 谢谢
我的原始代码
public function customerLogin(Varien_Event_Observer $observer)
{
if (Mage::helper('customerredirect')->isEnabled() && !Mage::getSingleton("core/session")->getRedirectregister()){
$lasturl = Mage::getSingleton('core/session')->getLastUrl();
if (strpos(Mage::helper('core/http')->getHttpReferer(), 'checkout') === false){
if (! preg_match("#customer/account/create#", $lasturl) && Mage::helper('customerredirect')->isoptionEnabled('login_customerredirect')) {
if(Mage::getSingleton('core/session')->getIsFromCart() == 1 || Mage::getSingleton('core/session')->getIsFromCheckout() == 1){
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('onestepcheckout/index'));
Mage::app()->getResponse()->sendResponse();
exit;
}
else
{
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('customer/account'));
Mage::app()->getResponse()->sendResponse();
exit;
}
}
}
}
Mage::getSingleton("core/session")->setRedirectregister(false);
Mage::getSingleton('core/session')->setIsFromCart('0');
Mage::getSingleton('core/session')->setIsFromCheckout('0');
}
这是此扩展程序的config.xml
public function customerLogin(Varien_Event_Observer $observer)
{
if (Mage::helper('customerredirect')->isEnabled() && !Mage::getSingleton("core/session")->getRedirectregister()){
$lasturl = Mage::getSingleton('core/session')->getLastUrl();
if (strpos(Mage::helper('core/http')->getHttpReferer(), 'checkout') === false){
if (! preg_match("#customer/account/create#", $lasturl) && Mage::helper('customerredirect')->isoptionEnabled('login_customerredirect')) {
if(Mage::getSingleton('core/session')->getIsFromCart() == 1 || Mage::getSingleton('core/session')->getIsFromCheckout() == 1){
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('onestepcheckout/index'));
Mage::app()->getResponse()->sendResponse();
exit;
}
else
{
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('customer/account'));
Mage::app()->getResponse()->sendResponse();
exit;
}
}
}
}
Mage::getSingleton("core/session")->setRedirectregister(false);
Mage::getSingleton('core/session')->setIsFromCart('0');
Mage::getSingleton('core/session')->setIsFromCheckout('0');
}
/*method for SignUp Customerredirect*/
public function customerRegistration(Varien_Event_Observer $observer)
{
Mage::getSingleton("core/session")->setRedirectregister(true);
if (Mage::helper('customerredirect')->isEnabled() && Mage::helper('customerredirect')->isoptionEnabled('registration_customerredirect') ) {
$_session = $this->_getSession();
$_session->setBeforeAuthUrl(Mage::helper('customerredirect')->setRedirectOnSignup());
}
}
所以我现在想要的就是Register页面像Login一样工作,目前登录重定向是完美的,但是对于Register总是我重定向到我的帐户页面。不到结帐页面。
新选项:
<events>
<customer_login>
<observers>
<customerredirect>
<class>customerredirect/observer_customer</class>
<method>customerLogin</method>
</customerredirect>
</observers>
</customer_login>
<customer_register_success>
<observers>
<customerredirect>
<class>customerredirect/observer_customer</class>
<method>customerRegistration</method>
</customerredirect>
</observers>
</customer_register_success>
</events>
答案 0 :(得分:1)
有一个更简单的解决方案。
创建覆盖:
/app/code/core/Mage/Customer/controllers/AccountController.php
复制_loginPostRedirect()方法
在新创建的文件中,在_loginPostRedirect方法中编辑:
FROM:
$this->_redirectUrl($session->getBeforeAuthUrl(true));
TO:
$sUrl = $session->getBeforeAuthUrl( TRUE );
// Do url exclusions and conditional checks here
// Force user to go home on login.
$sUrl = Mage::getBaseUrl();
$this->_redirectUrl( $sUrl );
用条件清理(它们有点复杂):
$sUrl = $session->getBeforeAuthUrl( TRUE );
if (Mage::helper('customerredirect')->isEnabled() && !Mage::getSingleton("core/session")->getRedirectregister())
{
$lasturl = Mage::getSingleton('core/session')->getLastUrl();
if (strpos(Mage::helper('core/http')->getHttpReferer(), 'checkout') === false)
{
if (! preg_match("#customer/account/create#", $lasturl) && Mage::helper('customerredirect')->isoptionEnabled('login_customerredirect'))
{
if( Mage::getSingleton('core/session')->getIsFromCart() == 1 || Mage::getSingleton('core/session')->getIsFromCheckout() == 1 )
{
$sUrl = Mage::getUrl('onestepcheckout/index');
}
else
{
$sUrl = Mage::getUrl('customer/account');
}
}
}
}
$this->_redirectUrl( $sUrl );
编辑注册:
$sUrl = $session->getBeforeAuthUrl( TRUE );
if (Mage::helper('customerredirect')->isEnabled() && !Mage::getSingleton("core/session")->getRedirectregister())
{
if (strpos(Mage::helper('core/http')->getHttpReferer(), 'checkout') === false)
{
if ( Mage::helper('customerredirect')->isoptionEnabled('login_customerredirect'))
{
$lasturl = Mage::getSingleton('core/session')->getLastUrl();
if( Mage::getSingleton('core/session')->getIsFromCart() == 1 || Mage::getSingleton('core/session')->getIsFromCheckout() == 1
|| preg_match("#customer/account/create#", $lasturl) )
{
$sUrl = Mage::getUrl('onestepcheckout/index');
}
}
}
}