Часто на сайте для коммуникации с пользователями используется подписка на новости и конечно хочетсясделать процесс подписки удобным для пользователя , далее будет описан процесс создания простой ajaxподписки на новости для сайта на системе битрикс .
Первым делом мы подключим библиотеку jquery с гугла
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
Далее мы создадим файл где будет наша форма подписки, я назвал его subscribe.php и разместил в папке/include/ajax/
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("subscribe");
// если есть post запрос с почтой то исполняем код
if($_POST["email"]) {
$EMAIL = $_POST["email"];
/* получим значение пользователя */
if ($USER->IsAuthorized()){
global $USER;
$USER = $USER->GetID() ;
}
else {
$USER = NULL ;
}
/* определим рубрики активные рубрики подписок */
$RUB_ID = array();
$rub = CRubric::GetList(array(), array("ACTIVE"=>"Y"));
while($rub->ExtractFields("r_")):
$RUB_ID = array($r_ID) ;
endwhile;
/* создадим массив на подписку */
$subscr = new CSubscription;
$arFields = Array(
"USER_ID" => $USER,
"FORMAT" => "html/text",
"EMAIL" => $EMAIL,
"ACTIVE" => "Y",
"RUB_ID" => $RUB_ID,
"SEND_CONFIRM" => "N"
);
$idsubrscr = $subscr->Add($arFields);
if($idsubrscr) {
$popuptitle = '<span style="color: green">Удачно</span>';
$popuptext = $EMAIL .' подписан на рассылку';
}
else {
$popuptitle = '<span style="color: red">Ошибка</span>';
$popuptext = $EMAIL .' уже был подписан на рассылку';
}
/* если ajax не подключен */
if ($_POST["action"] != "ajax") {
header('Location: '.$_SERVER['HTTP_REFERER']);
}
}
?>
<? if($popuptitle || $popuptext):?>
<script type="text/javascript" >
$.gritter.add({
title: '<? echo $popuptitle;?> ',
text: '<? echo $popuptext;?> ',
sticky: false,
time: 2500
});
</script>
<? endif ;?>
<form action="/include/ajax/subscribe.php" name="subscribe" method="post">
<label>Подписаться на новости:</label>
<input type="text" value="" title="Ваш e-mail" class="mailing-text" name="email"/> <br />
<input type="submit" value="Подписаться" title="" class="mailing-submit" /><br />
</form>
Подключаемый скрипт необходим мне для всплывающего окошка для оповещения пользователя, взять скрипт можно тут
Теперь я подключу этот файл в шаблоне сайт с помощью компонента bitrix:main.include обернув в div с классом mailing
<div class="mailing">
<?$APPLICATION->IncludeComponent(
"bitrix:main.include",
"",
Array(
"AREA_FILE_SHOW" => "file",
"PATH" => "/include/ajax/subscribe.php",
"EDIT_TEMPLATE" => ""
)
);?>
</div>
Последний шаг это создание скрипта для ajax обработки его назовем файл subscr.js подключим его в хэдере вот его содержимое
/* Function for ours ajax inquiry */
function ajaxpostshow(urlres, datares, wherecontent){
$.ajax({
type: "POST",
url: urlres,
data: datares,
dataType: "html",
beforeSend: function(){
var elementheight = $(wherecontent).height();
$(wherecontent).prepend('<div class="ajaxloader"></div>');
$('.ajaxloader').css('height', elementheight);
$('.ajaxloader').prepend('<img class="imgcode" src="/js/ajax/ajax-loader.gif">');
},
success: function(fillter){
$(wherecontent).html(fillter);
}
});
}
/* For subscribe */
$(".mailing form .mailing-submit").live("click",function(){
var formsubscrube = $(this).parents("form").serialize();
formsubscrube = formsubscrube + '&action=ajax';
ajaxpostshow("/include/ajax/subscribe.php", formsubscrube, ".mailing" );
return false;
});
Вот собственно и все ajax подписка в один клик сделана, подписка будет идти на все разделы , в личном кабинете пользователь сможет отписаться от не нужного ему раздела .
Опубликовано: 9 сентября 2011
|
|
|