Получайте уведомления об отсутствии на складе

Я пытаюсь создать функцию «Уведомить меня», если акции недоступны.

При поиске в админке я нашел только то, что пользователь должен sign up / log in получать уведомления о наличии на складе.

Но я просто хочу, чтобы пользователь (гость) вводил только свой адрес электронной почты, чтобы получать уведомления.

Как мне это сделать?

Пожалуйста, дайте предложения..

ИЗМЕНИТЬ:

У меня есть эта ссылка, с которой я могу начать.

До сих пор я добавлял следующий код в свой файл шаблона, который создает URL-адрес для перенаправления (думая сделать это с помощью ajax, чтобы остановить обновление страницы).

<?php
      $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 
      $base64 = strtr(base64_encode($actual_link), '+/=', '-_,'); 
      $postUrl = "http://$_SERVER[HTTP_HOST]/efk/productalert/add/stock/product_id/" . $simpleProduct->getId() . "/uenc/". $base64; 
?>

В приведенном выше коде efk — это имя папки моего проекта.

После этого я перешел к методу productalert/add/stock контроллера, то есть stockAction(), который вызывает sign up / login форму (я так думаю), используя $model->save();.

Как мне отключить этот вызов сохранения и добавить свой собственный небольшой оверлей, который содержит текстовое поле для ввода адреса электронной почты?


person Mr_Green    schedule 18.11.2013    source источник
comment
$base64 = strtr(base64_encode($actual_link), '+/=', '-_,'); Ого, почему?   -  person Brad    schedule 24.11.2013
comment
@Brad Я видел это в каком-то посте здесь, на SO .. Кстати, я новичок в php .. Я думаю, что это не нужно, может быть, magento предоставляет то же самое, что и встроенный метод .. Я не мог его найти.   -  person Mr_Green    schedule 24.11.2013
comment
Похоже, вы пытаетесь сделать какую-то действительно хакерскую форму кодирования URL... Если вам не нужно делать это для совместимости с чем-то (я не знаком с Magento), используйте urlencode().   -  person Brad    schedule 24.11.2013
comment
Просто примечание: если вы еще не рассмотрели это, убедитесь, что вы подтверждаете запросы на уведомление по электронной почте (аналогично проверке регистрации учетной записи, нажав на ссылку). В противном случае вашим сервисом могут злоупотреблять, а ваша почта может быть идентифицирована как спам.   -  person Bailey Parker    schedule 28.11.2013


Ответы (5)


Magento имеет встроенную функцию «Уведомить меня, когда товар появится в наличии». Его можно настроить в панели администратора: система/конфигурация/каталог/оповещения о продуктах и ​​настройки запуска оповещений о продуктах.

Вы правы, это работает только для зарегистрированных клиентов. Чтобы заставить его работать для гостевых пользователей, требуется некоторое кодирование. Я бы сказал, что вам нужно сделать следующие шаги:

  1. Добавить столбец email в таблицу product_alert_stock
  2. Создайте новый контроллер и действие (поверьте, это лучше, чем переопределить существующий через config.xml), которое расширяет Mage_ProductAlert_AddController::stockAction(). Ваш метод должен будет установить электронную почту гостя на модель productalert/stock.
  3. Создайте форму подписки и убедитесь, что она отправляет данные вашему новому контроллеру/действию.
  4. Обновите (переопределите) метод Mage_ProductAlert_Model_Observer::_processStock(), чтобы он учитывал ситуации, когда «клиент» не имеет идентификатора, но имеет адрес электронной почты.

Когда вы будете тестировать, я предлагаю вам установить расширение электронной почты SMTP Pro и mailcatcher, чтобы упростить процесс тестирования.

person vsushkov    schedule 26.11.2013

Мы сделали это (http://www.alfresia.co.uk/sorrento-side-table.html/). Здесь мы закончили создание пользовательского модуля, так как когда мы это делали, этот magento не поддерживал какую-либо систему оповещения о продукте для гостевых пользователей (я не знаю, поддерживается ли это сейчас).

Сначала мы создали текстовое поле, которое будет отображаться на странице товара, где товара нет в наличии. Мы сохраняли эту информацию в одной из наших пользовательских таблиц, где мы использовали схему {id, email, product_sku, status} (статус имел три значения: «Ожидает в наличии», «В наличии» и «Уже уведомлен»).

Затем мы написали наблюдатель, который был подключен к событию cataloginventory_stock_item_save_after, это помогло нам получить артикул продукта, который снова был на складе, и обновить все записи в нашей пользовательской таблице со статусом «На складе» и отправить письмо пользователю.

Вот как мы это сделали, наверняка будет более чистый способ сделать это.

person Munjal    schedule 24.11.2013

Вы могли бы работать с плагинами. MagentoCommerce имеет множество плагинов/расширений, которые делают то же самое.

Бесплатная версия — http://www.magentocommerce.com/magento-connect/product-out-of-stock-subscription-1350.html

person Shiva    schedule 25.11.2013
comment
Не поддерживает 1.8.. :( - person Mr_Green; 25.11.2013
comment
magentocommerce.com/magento-connect/ .. не могли бы вы проверить это .. он поддерживает 1.7, должен работать и с 1.8 - person Shiva; 25.11.2013

У меня тоже было подобное требование, и я установил 'http://www.magentocommerce.com/magento-connect/product-out-of-stock-subscription-1350.html' этот плагин. Что ж, этот плагин выполняет свою работу, но они переопределяют полный шаблон страницы просмотра продукта, а не просто добавляют новый блок. Таким образом, ваша индивидуальная разработка на странице просмотра продукта может отразиться на внешнем интерфейсе.

Или же этот плагин определенно делает свою работу.

person Rakesh    schedule 29.11.2013
comment
Я установил это расширение. это работает только в том случае, если для всего настраиваемого продукта указано, что его нет в наличии. пожалуйста помоги. пожалуйста, просмотрите комментарии в посте ниже, где я четко объяснил свою проблему. - person Mr_Green; 29.11.2013
comment
Один раз проверьте файлы view.phtml модулей. И посмотрите, сможете ли вы найти ошибку. - person Rakesh; 29.11.2013

Это http://www.magentocommerce.com/magento-connect/product-out-of-stock-subscription-1350.html действительно хорош, но он не работает для настраиваемых типов продуктов и полностью переопределяет контроллер продукта, что делает вашу систему уязвимой для будущих обновлений. Я думаю, что наблюдатели должны быть привязаны к событиям, когда товар снова в наличии, и должны информировать пользователей.

person user2790350    schedule 29.11.2013
comment
Я установил это расширение. это работает только в том случае, если для всего настраиваемого продукта указано, что его нет в наличии. - person Mr_Green; 29.11.2013
comment
поэтому, когда настраиваемый продукт есть на складе, он отображается из контроллера magento по умолчанию?? - person user2790350; 29.11.2013
comment
да... Если я вручную установлю в конфигурации администратора, что настраиваемый продукт отсутствует на складе, только я смогу увидеть уведомление об отсутствии на складе. Это полностью отличается от того, что я хочу на самом деле. Я хочу, чтобы у меня было три простых продукта в каждом настраиваемом продукте. и если какой-либо из простых продуктов имеет количество как 0, тогда уведомление об отсутствии на складе должно отображаться автоматически. Не могли бы вы установить это расширение и попытаться синхронизировать его с тем, что я пытаюсь здесь объяснить? это было бы очень полезно для меня. Благодарность.. :) - person Mr_Green; 29.11.2013
comment
Я неправильно понял ваш первый комментарий, теперь я понял вашу точку зрения. Я думаю, в этом случае вам придется написать некоторый код, чтобы это заработало, или просто переписать плагин, чтобы убедиться, что он работает для вас. Я считаю, что просто напишите методы наблюдения, они просты в реализации, это может быть просто лучше, чем переписывать расширение, а затем отлаживать. Кроме того, я путешествую на выходных и, похоже, не могу установить его. Извини !!! - person user2790350; 29.11.2013