2016-03-06 2 views
1

У меня проблема, я создаю функцию перенаправления моих клиентов на страницу проверки после регистрации, если у них есть 1 продукт в корзине. Но после перенаправления адрес выставления счетов на странице проверки не заполняется данными, а пользователь не входит в систему.Переадресовать после регистрации на вопрос о выпуске - Magento

это моя редирект функция:

$item = Mage::helper('checkout/cart')->getSummaryCount(); 
    if($item >0) 
    { 
     Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('checkout/onepage')); 
     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'); 
    } 






    /*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()); 
     } 
    } 

Обновленный код:

/приложение/код/​​сообщества/Amit/Custommodule/и т.д. /config.xml

<?xml version="1.0" ?> 
    <config> 
     <modules> 
      <Amit_Custommodule> 
       <version>1.0.0</version> 
      </Amit_Custommodule> 
     </modules> 
     <global> 
      <models> 
       <custommodule> 
        <class>Amit_Custommodule_Model</class> 
       </custommodule> 
      </models> 
     </global> 
     <frontend> 
      <events> 
       <customer_register_success> 
      <observers> 
       <notify_user> 
       <class>custommodule/observer</class> 
       <method>myredirection</method> 
       </notify_user> 
      </observers> 
       </customer_register_success>  
      </events> 
     </frontend> 
    </config> 

/app/code/community/Amit/Custommodule/Model/Observer.php

<?php 
    class Amit_Custommodule_Model_Observer { 
     public function myredirection(Varien_Event_Observer $observer) { 
     $AccountController = $observer->getEvent()->getAccountController(); 

     $Customer = $observer->getEvent()->getCustomer(); 

     $response1 = Mage::app()->getResponse(); // observers have event args 

      $url = 'http://magento.edreamag.com/'; 
      $response1->setRedirect($url); 
      Mage::app()->getFrontController()->sendResponse(); 

     return; 
     } 
    } 

/app/etc/modules/Amit_Custommodule.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Amit_Custommodule> 
      <codePool>community</codePool> 
      <active>true</active> 
     </Amit_Custommodule> 
    </modules> 
</config> 

/приложение/дизайн/интерфейс /ultimo/default/template/page/html/header.phtml

<?php 
    $currentUrl = Mage::getUrl('*/*/*', array('_current' => true)); 
if (strpos($currentUrl,'checkout/cart') == true || strpos($currentUrl,'onestepcheckout/index') == true) { 
    $myValue ='yes'; 
    Mage::getSingleton('core/session')->setCurrpage($myValue); 
} else { 
    if (strpos($currentUrl,'customer/account/create') == true || strpos($currentUrl,'customer/account/create') == true) { 
    }else { 
    $myValue ='no'; 
    Mage::getSingleton('core/session')->setCurrpage($myValue); 
}} 
?> 
+0

файл, который вы добавляете этот код? –

+0

У меня есть одно расширение для перенаправления – Robert

+0

где код входа? –

ответ

2

я предпочитаю это решение для вас

Шаг1: создать config.xml является app/code/community/Amit/Custommodule/etc/ - больше на: http://www.amitbera.com/create-an-magento-extension-with-custom-database-table/#sthash.JSktrUD0.dpuf , и это код

<?xml version="1.0" ?> 
    <config> 
     <modules> 
      <Amit_Custommodule> 
       <version>1.0.0</version> 
      </Amit_Custommodule> 
     </modules> 
     <global> 
      <models> 
       <custommodule> 
        <class>Amit_Custommodule_Model</class> 
       </custommodule> 
      </models> 
     </global> 
     <frontend> 
      <events> 
       <customer_register_success> 
      <observers> 
       <notify_user> 
       <class>custommodule/observer</class> 
       <method>myredirection</method> 
       </notify_user> 
      </observers> 
       </customer_register_success>  
      </events> 
     </frontend> 
    </config> 

Шаг2:

создать контроль имя файла модуля модуля в Amit_Custommodule.xml в приложении/etc/modules/

Код:

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Amit_Custommodule> 
      <codePool>community</codePool> 
      <active>true</active> 
     </Amit_Custommodule> 
    </modules> 
</config> 

Step3:

Создать observer.php в Amit> Custommodule> Model

код

<?php 
    class Amit_Custommodule_Model_Observer { 
     public function myredirection(Varien_Event_Observer $observer) { 
     $AccountController = $observer->getEvent()->getAccountController(); 

     $Customer = $observer->getEvent()->getCustomer(); 

     $response1 = Mage::app()->getResponse(); // observers have event args 

      $url = 'http://www.example.com/'; 
      $response1->setRedirect($url); 
      Mage::app()->getFrontController()->sendResponse(); 

     return; 
     } 
    } 

reference

здесь логика

добавить этот код в корзину странице PHTML или контроллер

$myValue ='yes'; Mage::getSingleton(‘core/session’)->setIsCart($myValue); 


class Amit_Custommodule_Model_Observer { 
      public function myredirection(Varien_Event_Observer $observer) { 
      $AccountController = $observer->getEvent()->getAccountController(); 

      $Customer = $observer->getEvent()->getCustomer(); 

      $response1 = Mage::app()->getResponse(); // observers have event args 

       $getSession =Mage::getSingleton('core/session')->getIsCart(); 
       if($getSession=='yes') 
       { 
       $url='you checkout ur'; 

       }else { $url='account url'; } 
       $response1->setRedirect($url); 
       Mage::app()->getFrontController()->sendResponse(); 

      return; 
      } 
     } 

добавить этот код в заголовке.PHTML отдых логика объясняется

$currentUrl = Mage::getUrl('*/*/*', array('_current' => true)); 
if (strpos($currentUrl,'checkout/cart') == true || strpos($currentUrl,'checkout/onepage') == true) { 
    $myValue ='yes'; 
    Mage::getSingleton('core/session')->setCurrpage($myValue); 

} else { 
    if (strpos($currentUrl,'customer/account/create') == true || strpos($currentUrl,'customer/account/create') == true) { 

    }else { 


    $myValue ='no'; 
    Mage::getSingleton('core/session')->setCurrpage($myValue); 
}} 

обновление этого кода только

class Amit_Custommodule_Model_Observer { 
    public function myredirection(Varien_Event_Observer $observer) { 
    $AccountController = $observer->getEvent()->getAccountController(); 

    $Customer = $observer->getEvent()->getCustomer(); 

    $response1 = Mage::app()->getResponse(); // observers have event args 


     if(Mage::getSingleton('core/session')->getCurrpage()=='yes') 
    { 
      $url=Mage::getUrl('checkout/onepage'); 
    } else { 
    $url=Mage::getUrl('customer/account'); 
    } 
     $response1->setRedirect($url); 
     Mage::app()->getFrontController()->sendResponse(); 

    return; 
    } 
} 
+0

, как вы проверяете, находится ли клиент в корзине покупок, чтобы перенаправить к выписке еще в мою учетную запись? можете ли вы адаптировать это для работы с моими условиями? для входа и регистрации? – Robert

+0

Добавьте свою логику в '$ item = Mage :: helper ('checkout/cart') -> getSummaryCount(); if ($ item> 0) { Mage :: app() -> getFrontController() -> getResponse() -> setRedirect (Mage :: getUrl ('checkout/onepage')); Mage :: app() -> getResponse() -> sendResponse(); выход; } 'в' $ url' –

+0

, но это не хорошо, что логика, мне нужно проверить, посетил ли пользователь корзину покупок, если да, то переадресовать после регистрации на страницу проверки, а также в Мой аккаунт – Robert