Вместо 'email от кого отправляем' вставьте реальный адрес электронной почты, который позволит отправить письмо с Вашего сервера, а вместо www.site.ru адрес Вашего сайта.
Раз тема спусть столько времени актуальна, рассказываю как реализовать отправку формы по AJAX без перезагрузки страницы на примере формы быстрого заказа в один клик.
Форма в шаблоне карточки товара:
<div id="res_by_me">
{if $wa->post("phone") and shopCustom::sendBuyMeEmail($wa->post("phone"), $wa->post("title"), $wa->post("url"), $wa->post("code"))}
{* ничего не делаем *}
{else}
<form method="post" action="" id="buyme_send_form">
<label class="fs11 mb10">Оставьте номер телефона и Ваш заказ будет оформлен. Мы свяжемся с Вами для уточнения деталей доставки.</label>
{* ниже размещаем скрытые дополнительные поля, которые мы хотим отправить на email *}
{* например, Наименование товара, Урл откуда отправлена форма и ID товара *}
{* эти же поля необходимо передать в метод shopCustom::sendBuyMeEmail() в качестве параметров *}
<input type="hidden" name="title" value="{$product.name|escape}">
<input type="hidden" name="url" value="{$wa->currentUrl(true)}">
<input type="hidden" name="code" value="{$product.id}">
{* номер телефона *}
<input type="text" placeholder="Номер телефона" name="phone">
<button type="submit">Заказать</button>
</form>
{/if}
</div>
Скрипт для отправки:
$("#buyme_send_form").submit(function(){
var form = $(this);
var data = form.serialize();
$.ajax({
type: 'POST',
url: location.href,
data: data,
success: function(response){
$('#res_by_me').html('Заказ уже у нас. Мы свяжемся с Вами.'); //вместо формы пишем сообщение
}
});
return false; //отключаем перезагрузку страницы
});
Теперь в соответствии с инструкцией https://support.webasyst.ru/170/custom-helper/ создаем класс shopCustom и метод sendBuyMeEmail(). Привожу полный код файла /wa-apps/shop/lib/classes/shopCustom.class.php
Вместо 'email от кого отправляем' вставьте реальный адрес электронной почты, который позволит отправить письмо с Вашего сервера, а вместо www.site.ru адрес Вашего сайта.
То же самое вместо 'email кому отправляем'.
в ответ на Обращение к методу со стороны ajax
Раз тема спусть столько времени актуальна, рассказываю как реализовать отправку формы по AJAX без перезагрузки страницы на примере формы быстрого заказа в один клик.
Форма в шаблоне карточки товара:
<div id="res_by_me"> {if $wa->post("phone") and shopCustom::sendBuyMeEmail($wa->post("phone"), $wa->post("title"), $wa->post("url"), $wa->post("code"))} {* ничего не делаем *} {else} <form method="post" action="" id="buyme_send_form"> <label class="fs11 mb10">Оставьте номер телефона и Ваш заказ будет оформлен. Мы свяжемся с Вами для уточнения деталей доставки.</label> {* ниже размещаем скрытые дополнительные поля, которые мы хотим отправить на email *} {* например, Наименование товара, Урл откуда отправлена форма и ID товара *} {* эти же поля необходимо передать в метод shopCustom::sendBuyMeEmail() в качестве параметров *} <input type="hidden" name="title" value="{$product.name|escape}"> <input type="hidden" name="url" value="{$wa->currentUrl(true)}"> <input type="hidden" name="code" value="{$product.id}"> {* номер телефона *} <input type="text" placeholder="Номер телефона" name="phone"> <button type="submit">Заказать</button> </form> {/if} </div>Скрипт для отправки:
$("#buyme_send_form").submit(function(){ var form = $(this); var data = form.serialize(); $.ajax({ type: 'POST', url: location.href, data: data, success: function(response){ $('#res_by_me').html('Заказ уже у нас. Мы свяжемся с Вами.'); //вместо формы пишем сообщение } }); return false; //отключаем перезагрузку страницы });Теперь в соответствии с инструкцией https://support.webasyst.ru/170/custom-helper/ создаем класс shopCustom и метод sendBuyMeEmail(). Привожу полный код файла /wa-apps/shop/lib/classes/shopCustom.class.php
Файл /wa-apps/shop/lib/classes/shopCustom.class.php
<?php class shopCustom { public static function sendBuyMeEmail($phone, $title, $url, $code){ //не забудьте проверить данные!!! $body = $phone ."\n". $title ."\n Код товара:". $code ."\n". $url; //формируем тело сообщения по вашему желанию $subject = 'БЫСТРЫЙ ЗАКАЗ'; $mail_message = new waMailMessage($subject, $body, 'text/plain'); $mail_message->setFrom('email от кого отправляем', 'www.site.ru'); $mail_message->setTo('email кому отправляем', 'www.site.ru'); $mail_message->send(); return true; } }в ответ на Обращение к методу со стороны ajax
из /wa-apps/shop/lib/classes/shopNotifications.class.php
в ответ на Обращение к методу со стороны ajax
Спасибо. Оба замечания учел, все работает!
в ответ на Обращение к методу со стороны ajax
Решено.
Добавил <input type="hidden" value="call_me" name="send">
Спасибо за помощь!
в ответ на Обращение к методу со стороны ajax
Идея понятна, но не получается :(
Вот такая простейшая форма
{if $wa->post("send") and $wa->shop->sendEmail($wa->post("phone"))}
{else}
<form method="post" action="" id="callme_send_form">
<input type="text" placeholder="Номер телефона" name="phone">
<input type="submit" value="Перезвоните мне" name="send">
</form>
{/if}
За ней скрипт
$(document).ready(function() {
$("#callme_send_form").submit(function(){
var form = $(this);
var data = form.serialize();
$.ajax({
type: 'POST',
url: location.href,
data: data
});
return false;
});
});
Без скрипта письмо приходит, со скриптом - нет.
в ответ на Обращение к методу со стороны ajax