Как уведомить, когда продукт добавлен в Magento? - PullRequest
0 голосов
/ 09 марта 2011

Мне интересно, как лучше всего уведомить пользователя о добавлении нового продукта, который соответствует его / ее интересам?

Мне кажется, что cron работает не менее 2 раз в день (или больше, например, каждый час)

Я также могу представить, чтобы реализовать какую-то систему событий, но она может быть хитрой.

Есть ли у вас какие-либо отзывы?

Спасибо

Ответы [ 4 ]

1 голос
/ 24 февраля 2012

Во время добавления нового продукта вы хотите отправить письмо клиентам, тогда не переходите на RSS или cron, просто используйте EVENT под названием "catalog_product_save_after" в вашем файле config.xml и просто вызовите одну функцию в этой функции напишите вот так

<code>public function sendMailToNotifiedCustomerOk($observer){

       $product  = $observer->getProduct();  //get the current product
       echo "<pre>";    print_r($product); echo "
"; выход; }

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

 [_isObjectNew:protected] => 1

Это значение равно 1 только для добавления новых продуктов.

если вы обновляете или редактируете продукты, тогда это значение равно

 [_isObjectNew:protected] =>  

так что это ноль (0)

Вы можете написать так

if($product->_isObjectNew)
{
 //send email to your friends
}
0 голосов
/ 10 марта 2011

Вы можете создать сценарий, который запускается одновременно со сценарием INSERT, который выполняет поиск в таблице в вашей базе данных с именем say «Notify», выполняет поиск в цикле по таблице и находит всех, кто подписался на эту категорию «Toothpicks», и отправляет массовое электронное письмо.в конце каждому найденному пользователю

Таким образом, вам нужно настроить переменную для захвата пользователей в ($ users) и одну переменную для категории ($ category = mysql_real_escape_string ('$ _ POST [' category)']);. Затем установите оператор SELECT для извлечения из таблицы "Kitchen_Goods" WHERE category = $ category. Затем установите переменную $ lines, чтобы вы могли извлекать столбцы username и email_address и устанавливать их в переменные. Затем объединять всерезультаты электронной почты должны иметь запятую между ними, а затем отобразить эту переменную в качестве поля получателей в вашей функции mail (). Это обходной, неполный способ сделать это.

Или вы можете просто использовать RSS, которыйВ 100 раз легче лол.

0 голосов
/ 10 марта 2011

Вы не указываете, как вы сохраняете интересы клиентов, поэтому я отнесу это к магии, пока вы не скажете иначе.Хороший способ сделать это - привязать событие к событию catalog_product_save_after в Magento.Эта функция будет срабатывать всякий раз, когда вы сохраняете продукты.Создайте наблюдатель, который будет выглядеть примерно так:

public function observeProductSave($event) {
    $product = $event['product'];
    $customers = $this->getMatchingCustomerInterests($product);
    foreach($customers as $customer) {
        //send email to that customer
    }
}

public function getMatchingCustomerInterests($product) {
    // here you'll need to use your mechanism for saving
    // customer interests to grab an array/collection of
    // customers to send the emails to.
}

Очевидно, что этот код не завершен на 100%, но в этом его суть.Возможно, вы захотите добавить средство, чтобы убедиться, что клиенты не слишком часто уведомляются о продукте.

Надеюсь, это поможет!

Спасибо, Джо

0 голосов
/ 10 марта 2011

Вам необходимо добавить значение в атрибут «Задать продукт как новый с даты», чтобы оно отображалось в RSS-ленте нового продукта. Не имеет смысла создавать новую систему событий. Это простой способ реализовать такие вещи.

...