Как получить уведомление, если продукт отключен в magento EE

Если продукт изменен в админке, я хочу создать для него событие/наблюдатель... или если он изменен через импорт cron/продукта.

Вот что у меня есть:

У меня есть модуль:

приложение/и т.д./модули

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <modules>
    <Alertstatus_Disabled>
      <active>true</active>
      <codePool>community</codePool>
    </Alertstatus_Disabled>
  </modules>
</config>

приложение/код/сообщество/Alertstatus/Disabled/etc/config.xml

<config>
  <modules>
    <Alertstatus_Disabled>
      <version>1.0.0></version>
    </Alertstatus_Disabled>
  </modules>

  <global>
    <models>
      <disabled>
        <class>Alertstatus_Disabled_Model</class>
      </disabled>
    </models>
    <events>
      <catalog_product_save_before>
        <observers>
          <update_status_disabled>
            <type>singleton</type>
            <class>disabled/observer</class>
            <method>disabledStatusChange</method>
          </update_status_disabled>
        </observers>
      </catalog_product_status_update>
    </events>
    <template>
            <email>
                <custom_order_tpl module="Alertstatus_Disabled">
                    <label>Status Disabled</label>
                    <file>statusdisabled_alert.html</file>
                    <type>html</type>
                </custom_order_tpl>
            </email>
        </template>
    </global>
</config>

Модель/наблюдатель - это то, где у меня проблемы:

    <?php

class Alertstatus_Disabled_Model_Observer
{
  public function disabledStatusChange($event)
  {
    $attributesData = $observer->getEvent()->getAttributesData();
      $productIds     = $observer->getEvent()->getProductIds();

      $user  = Mage::getSingleton('admin/session')->getUser();
      foreach ($productIds as $id) {
          $change             = Mage::getModel('some_module/changes');
          $change->product_id = $id;
          $change->new_values = print_r($attributesData, true);
          $change->user_id    = ($user) ? $user->getId() : NULL;
          $change->created    = now();
          $change->save();
      }
      return $this;
  }


    private function _sendStatusMail($order)
    {
        $emailTemplate = Mage::getModel('core/email_template');

        $emailTemplate->loadDefault('custom_order_tpl');
        $emailTemplate->setTemplateSubject('Products have been disabled');

        //Get General email address (Admin0>Configuration->General->Store Email Addresses)
        $salesData['email'] = Mage::getStoreConfig('trans_email/ident_general/email');
        $salesData['name']  = Mage::getStoreConfig('trans_email/ident_general/name');

        $emailTemplate->setSenderName($salesData['name']);
        $emailTemplate->setSenderEmail($salesData['email']);

        $emailTemplateVariables['store_name'] = $order->getStoreName();
        $emailTemplateVariables['store_url'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
        $emailTemplate->send($order->getCustomerEmail(), $order->getStoreName(), $emailTemplateVariables);


  }
}

Ничто из того, что я пробовал, кажется, не работает для меня.


person thismethod    schedule 29.03.2016    source источник


Ответы (1)


Вы использовали catalog_product_save_before в xml, но при его закрытии вы получили catalog_product_status_update.

Может быть, это должно выглядеть так:

  <catalog_product_status_update>
    <observers>
      <update_status_disabled>
        <type>singleton</type>
        <class>disabled/observer</class>
        <method>disabledStatusChange</method>
      </update_status_disabled>
    </observers>
  </catalog_product_status_update>
person Sarjan Gautam    schedule 12.10.2017