Блог Николая Семенцова

Партнер компании 1с-битрикс

Подписка при оформление заказа неавторизованным пользователям

Когда у вас есть живой интернет-магазин и на нем идут постоянные покупки "заглянувшими" покупателями, не хочется чтобы это была его первая и последняя покупка, поэтому было бы не плохо предложить ему подписаться на новости и акции , вдруг его еще что нибудь заинтересует :)

Для этого в шаблоне компонента sale.order.ajax в файле props.php разместим код, галку в checkbox по умолчанию оставим включенной.

PrintPropsForm($arResult["ORDER_PROP"]["USER_PROPS_N"]);
     PrintPropsForm($arResult["ORDER_PROP"]["USER_PROPS_Y"]);
// разместим после этих строк
     ?>        
 
     <?if(!$USER->IsAuthorized()):?>
        <tr>
            <td valign="top" align="right">
                <?=GetMessage("SOA_NEWS")?>
            </td>
            <td>
                <input type="hidden" name="NEWSCHECKED" value="N">  
                <input type="checkbox" name="NEWSCHECKED" value="Y" <?if($_REQUEST['NEWSCHECKED'] != 'N'):?>checked="checked"<?endif;?> />
           </td>
        </tr>
        <?endif;?>   

Его вы можете разместить в любом месте , главное что бы он был в теге <form> , эта строка GetMessage("SOA_NEWS") отвечает за вывод фразы "Подпишитесь на акции" .

Далее в файле init.php разместим обработчик, который подпишет пользователя на все рубрики , вы можете подписать естественно на одну или две по своему желанию, просто выставив свои id в массиве $RUB_ID .

// подпишем пользователя при его согласии
AddEventHandler('sale', 'OnSaleComponentOrderOneStepComplete', 'Subscrible');
 
function Subscrible($ID, &$arFields)
{
    // если галка на подписку стоит
    if($_REQUEST['NEWSCHECKED'] == 'Y') {  
        // в моей форме email  находилось именно в поле с именем ORDER_PROP_2        
        $EMAIL =  $_REQUEST['ORDER_PROP_2'];
        $USER = $arFields['USER_ID'];
        // получим все активные рубрики  
        CModule::IncludeModule("subscribe");
        $RUB_ID = array();   
        $rsRubric = CRubric::GetList(array(), array("ACTIVE" => "Y"));
        while($arRubric = $rsRubric->GetNext()) {
            $RUB_ID[] = $arRubric['ID'];                     
        }    
        /* создадим массив на подписку */
        $subscr = new CSubscription;
        $arFields = Array(
            "USER_ID" => $USER,
            "FORMAT" => "html/text",
            "EMAIL" => $EMAIL,
            "ACTIVE" => "Y",
            "RUB_ID" => $RUB_ID,
            "SEND_CONFIRM" => "N",
            "CONFIRMED" => "Y"
        );
        $idsubrscr = $subscr->Add($arFields, SITE_ID);                               
    }
}

Вот собственно и все , используйте на здоровье только не мучайте пользователей спамом :)


Опубликовано: 3 июля 2012




Помогла заметка? Жмите кнопки ниже


ВКонтакт Facebook Google Plus Одноклассники Twitter Livejournal Liveinternet Mail.Ru





comments powered by Disqus