【问题标题】:magento event before or after product load from search or home or catalog page从搜索或主页或目录页面加载产品之前或之后的 magento 事件
【发布时间】:2013-04-12 19:34:52
【问题描述】:

我需要一个在产品加载之前/之后调用的 magento 事件/观察者。 我想由该观察者更改/附加产品名称。

我使用了 catalog_product_load_after 事件

但它不起作用,当您从搜索中加载产品时, 而且它不会调用首页上的产品,例如畅销产品等。

基本上是一个函数/观察者/事件,每次在magento前端加载产品时都会调用,无论是加载在主页还是搜索页面。

【问题讨论】:

  • catalog_product_load_after 事件总是在任何产品加载时调用。在 Mage::dispatchEvent() 中放置一个 Mage::log($name) 并检查它是否在您的情况下调用。

标签: php magento events


【解决方案1】:

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;
    }
}

【讨论】:

  • 感谢您的回复,我尝试了此活动,但没有调用产品视图页面。它适用于所有其他人。
  • catalog_product_collection_load_after 将触发诸如Mage::getModel('catalog/product')-&gt;getCollection()-&gt;load() 之类的调用。我建议您使用 IDE 和 xdebug 在 Mage::dispatchEvent() 方法中放置一个侦听器,并找出在您感兴趣的时间触发的事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多