Интерфейс магазина:Какое событие можно наблюдать в первую очередь?
-
12-12-2019 - |
Вопрос
В текущей версии Vanilla Magento 1.9.1 (CE) или 1.14.1/1.14.2 (EE) что это такое? первый событие, которое можно наблюдать?
- для интерфейса (через
/index.php
;когда установщик уже запустился) - для интерфейса, когда установщик еще не запускался (если это имеет значение)
- для администратораhtml
- в хроне
- в API веб-сервиса 1
- в API веб-сервиса 2
(этот вопрос может касаться чистых фактов, но в рамках Magento 1 более интересным является то, как найти эти события в коде)
Чтобы узнать больше, я собрал несколько веб-ресурсов:
- Какое событие отправляет Magento раньше всего? (Вопросы и ответы, июнь 2011 г.)
- События запуска Magento (сентябрь 2012 г.;Алан Сторм)
- Какое первое событие запускается в Magento? - (апрель 2014 г.;пока.Шраде)
Решение
Самостоятельно наблюдать за этими событиями можно следующим образом:
/app/Mage.php измените dispatchEvent()
функция, как показано ниже:
/**
* Dispatch event
*
* Calls all observer callbacks registered for this event
* and multiple observers matching event name pattern
*
* @param string $name
* @param array $data
* @return Mage_Core_Model_App
*/
public static function dispatchEvent($name, array $data = array())
{
Mage::log($name, null, 'events.log', true); //add this line
Varien_Profiler::start('DISPATCH EVENT:'.$name);
$result = self::app()->dispatchEvent($name, $data);
Varien_Profiler::stop('DISPATCH EVENT:'.$name);
return $result;
}
Теперь, когда вы запустите страницу, вы заметите, что /var/log/events.log
регистрирует каждое событие по порядку при загрузке любой страницы, которую вы хотите наблюдать.
Убедитесь, что это выполняется в промежуточной среде, где вы единственный человек, использующий сайт, чтобы гарантировать, что вы регистрируете правильные события.
Очистите файл журнала после просмотра каждой страницы по отдельности, чтобы первое зарегистрированное событие всегда было первым инициированным событием.