Magento customer_register_success Observer, получить реферальную страницу

У меня есть наблюдатель в Magento, который срабатывает всякий раз, когда клиент регистрирует новую учетную запись. Что я хотел бы сделать, так это выяснить, была ли эта регистрация получена при оформлении заказа или на обычной странице регистрации. Что я могу вызвать из наблюдателя, чтобы узнать, с какой страницы пришло внутреннее обращение к регистрации?


person DWils    schedule 05.03.2014    source источник


Ответы (1)


Вы можете сохранить последние X просмотров страниц в реестре magento, поместив что-то подобное в некоторый PHP-код, который выполняется каждый раз.

$urlHistory = (array) Mage::getSingleton('core/session')->getMyUrlHistory();
while (is_array($urlHistory) && count($urlHistory) > 3) {
    array_shift($urlHistory);   
}
$urlHistory[] = Mage::helper('core/url')->getCurrentUrl();
Mage::getSingleton('core/session')->setMyUrlHistory($urlHistory);

Затем вы можете проанализировать Mage::getSingleton('core/session')->getMyUrlHistory() в своем наблюдателе.

person Artur Cichosz    schedule 05.03.2014
comment
Я думал об установке переменной сеанса или значения файла cookie при посещении одной из двух страниц, но я не видел логичного подхода к загромождению файлов cookie, поэтому сеансы кажутся подходящим вариантом. Любопытный вопрос, однако, из вашего примера кода я не вижу функцию getMyUrlHistory в Mage_Core_Model_Session или каких-либо ее родителей в этом отношении (модель расширяет Mage_Core_Model_Session_Abstract, Mage_Core_Model_Session_Abstract_Varien и Varien_Object). Используете ли вы перезапись или переопределение ядра? - person DWils; 06.03.2014
comment
Магические методы ключевых слов. Magento часто использует магические сеттеры и геттеры. - person Artur Cichosz; 06.03.2014
comment
Хм, интересно читать, не знал, что Magento реализовал эту часть PHP. - person DWils; 06.03.2014