2016-03-29 8 views
1

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

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

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

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

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

приложение/код/​​сообщества/Alertstatus/Disabled/и т.д./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); 


    } 
} 

Ничего, что я пробовал, похоже, работает на меня.

ответ

0

Вы использовали catalog_product_save_before в xml, но при его закрытии у вас есть каталог_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>