У меня есть наблюдатель в Magento, который срабатывает всякий раз, когда клиент регистрирует новую учетную запись. Что я хотел бы сделать, так это выяснить, была ли эта регистрация получена при оформлении заказа или на обычной странице регистрации. Что я могу вызвать из наблюдателя, чтобы узнать, с какой страницы пришло внутреннее обращение к регистрации?
Magento customer_register_success Observer, получить реферальную страницу
Ответы (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
Я думал об установке переменной сеанса или значения файла 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
Магические методы ключевых слов. Magento часто использует магические сеттеры и геттеры.
- person Artur Cichosz; 06.03.2014
Хм, интересно читать, не знал, что Magento реализовал эту часть PHP.
- person DWils; 06.03.2014