2013-04-19 1 views
4

Мне нужно событие/наблюдатель magento, который вызывает до/после загрузки продукта. Я хочу изменить/добавить имя продукта этим наблюдателем.Событие magento до или после загрузки продукта из поиска или на домашнюю страницу или на страницу каталога

Я использовал catalog_product_load_after события,

но это не работает, при загрузке продукта из поиска, , а также он не вызывает к продуктам, которые находятся на домашней странице, как самый продаваемый продукт и т.д.

в основном функция/наблюдатель/событие, которое вызывается каждый раз, когда загрузка продукта в интерфейсе magento загружается на домашнюю страницу или страницу поиска.

+0

event_product_load_after событие всегда вызывается при любой загрузке продукта. поместите Mage :: log ($ name) в Mage :: dispatchEvent() и проверьте его вызов или нет в вашем случае. – MagentoDiary

ответ

8

Событие catalog_product_load_after действует и будет срабатывать при каждом загрузке продукта. Если он не срабатывает, если вы думаете, что продукт не загружается или событие было изменено путем настройки в вашем магазине.

Важно отметить, что, обратите внимание, что catalog_product_load_after события не огня, если вы загружаете сбор продукта (как в этом случае вы, конечно, не загружая продукт, а сборник, содержащим продукты). Страницы категорий и результатов поиска не загружают каждый продукт отдельно, но загружают отфильтрованную коллекцию продуктов, поэтому вы не видите огонь события. Вы можете вместо этого рассмотреть возможность использования события catalog_product_collection_load_after, которое позволит вам вытащить коллекцию и перебрать ее изнутри метода наблюдателя.

<?php 
class NameSpace_Module_Model_Observer 
{ 
    public function observerMethod($observer) 
    { 
     foreach ($observer->getCollection() as $product): 
      ... 
     endforeach; 
    } 
} 
+0

спасибо за ваш ответ, я пробовал это событие, но не вызывал страницу просмотра продукта. Он работает для всех остальных. –

+0

'catalog_product_collection_load_after' будет запускаться вызовом, таким как' Mage :: getModel ('catalog/product') -> getCollection() -> load() '. Я бы посоветовал вам разместить слушателя внутри метода Mage :: dispatchEvent() с помощью IDE и xdebug и узнать, какие события срабатывают в то время, когда вас интересует. –

Смежные вопросы