Привет,
Опять же задача одного из клиентов. Пользователь заходит на сайт, выбирает товар, а ему - НЕТ НА СКЛАДЕ. [spoiler]Но пользователь очень-очень хочет купить понравившуюся вещицу по приемлемой цене на вашем сайте и хочет знать, когда товар всё-таки появится и его можно приобрести.
Представлю пример решения такой задачи, возможно, не очень удачный, но всё же
1. Сначала создаём пользовательское поле для объекта USER с кодом UF_SEND_ME_MESSAGE.
2. Теперь создадим типа почтового события SEND_ME_MESSAGE и шаблон к нему примерно такого содержания:
При создании шаблона в поле "Кому" нужно вписать "#EMAIL#"
3. В файл /bitrix/php_interface/init.php вставляем следующее:
4.Используем кастомизированный компонент . В компоненте, если товара нет на складе, то выводится ссылка "Сообщить, если появится на складе".
После того, как пользователь кликнет "Сообщить, если появится на складе", в пользовательское поле UF_SEND_ME_MESSAGE добавится идентификатор товара, т.е. пользователь "как бы" подписался на уведомление. А обработчик события OnBeforeProductUpdate рассылает уведомление тем пользователям, которые "подписались", в том случае, если у товара ведётся учёт количества товара перестало быть нулевым.
Пока!
Опять же задача одного из клиентов. Пользователь заходит на сайт, выбирает товар, а ему - НЕТ НА СКЛАДЕ. [spoiler]Но пользователь очень-очень хочет купить понравившуюся вещицу по приемлемой цене на вашем сайте и хочет знать, когда товар всё-таки появится и его можно приобрести.
Представлю пример решения такой задачи, возможно, не очень удачный, но всё же
1. Сначала создаём пользовательское поле для объекта USER с кодом UF_SEND_ME_MESSAGE.
2. Теперь создадим типа почтового события SEND_ME_MESSAGE и шаблон к нему примерно такого содержания:
| Здравствуйте, Товар #NAME# появился на складе. Вы можете приобрести его прямо сейчас: <a href="#SERVER_NAME##DETAIL_PAGE_URL#">#SERVER_NAME##DETAIL_PAGE_URL#<a> #SITE_NAME# |
При создании шаблона в поле "Кому" нужно вписать "#EMAIL#"
3. В файл /bitrix/php_interface/init.php вставляем следующее:
AddEventHandler("catalog", "OnBeforeProductUpdate", "SendMeMessage");
function SendMeMessage($ID,$arFields)
{
global $USER;
$arProduct=CCatalogProduct::GetByID($ID);
if (($arProduct['QUANTITY']==0)&&($arFields['QUANTITY']>0))
{
$rsUsers = $USER->GetList(($by="id"), ($order="desc"), Array(),array('SELECT'=>Array('UF_*')));
$rsElement=CIBlockElement::GetByID($ID);
$arElement=$rsElement->GetNext();
$Fields=Array(
'NAME'=>$arElement['NAME'],
'DETAIL_PAGE_URL'=>$arElement['DETAIL_PAGE_URL']
);
$Event=new CEvent;
while($arUSER=$rsUsers->Fetch())
{
$arSend=explode('#',$arUSER['UF_SEND_ME_MESSAGE']);
$Fields['EMAIL']=$arUSER['EMAIL'];
if(in_array($arParams['ELEMENT_ID'],$arSend))
$Event->Send('SEND_ME_MESSAGE',SITE_ID,$Fields);
$NewarSend=Array();
foreach($arSend as $ElID)
{
if(!$ID==$ElID)
$NewarSend[]=$ElID;
}
$USER->Update($arUSER['ID'],Array('UF_SEND_ME_MESSAGE'=>implode("#", $NewarSend)));
}
}
} |
4.Используем кастомизированный компонент . В компоненте, если товара нет на складе, то выводится ссылка "Сообщить, если появится на складе".
После того, как пользователь кликнет "Сообщить, если появится на складе", в пользовательское поле UF_SEND_ME_MESSAGE добавится идентификатор товара, т.е. пользователь "как бы" подписался на уведомление. А обработчик события OnBeforeProductUpdate рассылает уведомление тем пользователям, которые "подписались", в том случае, если у товара ведётся учёт количества товара перестало быть нулевым.
Пока!