Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 13 Ответов
  • 1972 Просмотров
*

hdsite

  • Осваиваюсь на форуме
  • 13
  • 3 / 5
В магазине настроена покупка без регистрации.
Корзина->Контактные данные->Доставка оплата-> Подтверждение
Требуется со страницы с контактными данными после нажатия на кнопку регистрация, получить все введённые поля.

Где сама форма находится я нашел components/com_virtuemart/html/checkout_register_form.php
Но мне это ничего не дает. По коду видно что после нажатия на кнопку Регистрация, идет отправка всех данных методом POST в файл index.php
Далее index.php делает переадресацию с использованием метода GET на следующий шаг, другу страницу(Доставка оплата).

Необходимо вклиниться либо при нажатии кнопки Регистрация, получить данные и отправить на мейл, либо как-то со страницы Доставка и оплата это сделать.
Посоветуйте как лучше?
*

fsv

  • Moderator
  • 2765
  • 402 / 2
В магазине настроена покупка без регистрации.
при нажатии кнопки Регистрация, получить данные и отправить на мейл
Кому-зачем-в каком виде отправить?
1) получить по клику на кнопку данные полей jquery и отправить постом в свой самописный файл, который пошлет письмо.
2) при покупке БЕЗ регистрации ее нет в Joomla, в VM она все равно есть. Юзер записывается в #__vm_user_info . Id идут в минус от 62 (суперадмин). Там и подсмотрите нужный адрес, если с реализацией п.1 проблемы.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

hdsite

  • Осваиваюсь на форуме
  • 13
  • 3 / 5
Спасибо за объяснение.
Отправлять данные требуется владельцу сайта. В любом виде.

Сделал файл на php который отправляет письма.
Но не пойму как его правильно вызвать.
Нашел один путь:
onclick="location.href=\'http://www.site.ru/emalme.php?mail=email\';return( submitregistration());"
На кнопку прикручиваю переход по ссылке. Но мне как таковой переход не требуется, мне нужно что бы в параллель это работало, не разрушая алгоритм работы магазина.
И в этой конструкции он делает переход в независимости от результата работы функции submitregistration
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Отправлять данные требуется владельцу сайта. В любом виде.
Зачем? Если он сам ведет "ручками" "каталог клиентов", почему не возьмет эти данные из письма о заказе или из заказа в админке?

Сделал файл на php который отправляет письма.
Но не пойму как его правильно вызвать.
мне нужно что бы в параллель это работало

ps_userfield.php , строка примерно 270-300 добавьте в шапку формы идентификатор
echo '<form action="'. $mm_action_url .basename($_SERVER['PHP_SELF']).'" method="post" name="adminForm" id="adminForm">';

В checkout_register_form.php добавьте
Код: javascript
(function($) {
$(document).ready(function() {
$("#adminForm").submit(function(event){
event = event || window.event ;
if (event.preventDefault) { 
event.preventDefault();
} else {
event.returnValue = false;
}
var data = $(this).serialize();
var url = "/emalme.php";
$.ajax({
type:  'POST',
url:    url,
data:   data,
success: function() {
$(this).submit;

});
});
});
})(jQuery);
Не проверял. Имя и путь "почтового" файла сами уточните. В этом файле ловите из post данные и отсылайте письмо.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

hdsite

  • Осваиваюсь на форуме
  • 13
  • 3 / 5
Спасибо, почти все работает. Заменил метод на GET. Все ок. Письма приходят.
Только дальше не следующий шаг не переходит. Кнопка нажимается и ничего не происходит почему-то
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Попробуйте заменить $(this).submit; на $("#adminForm").submit();
скобки забыл
Ссылка на сайт с изменениями?
А чем post не нравится?
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

hdsite

  • Осваиваюсь на форуме
  • 13
  • 3 / 5
Скобки должны быть одинарные - тогда все работает. Спасибо за помощь. Подскажите это будет работать во всех браузерах?
У меня отправка почты под ГЕТ была написана. Да и разницы я не заметил, просто заменил на GET и все заработало.
Зачем это нужно - владельцы хотят возвращать клиентов. Не все клиенты до конца оформляют заказы...
*

hdsite

  • Осваиваюсь на форуме
  • 13
  • 3 / 5
Оказалось что все равно не работало. Это мы старые письма спутали.
Я добавил на всякий случай
error: function() {                   
$("#adminForm").submit();

И переход стал осуществляться, но письмо так и не приходит. Т.е. либо кнопку жмешь письмо приходит но переход не осуществляется, либо наоборот, переход идет но письма нет(если добавить обработчик error)
« Последнее редактирование: 09.07.2013, 23:57:19 от hdsite »
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Зачем это нужно - владельцы хотят возвращать клиентов. Не все клиенты до конца оформляют заказы...
Теперь дошло.
Цитировать
Ссылка на сайт с изменениями?
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Еще вариант (скучный): в ps_shopper.php в функции add дописать отправку письма и не париться со скриптами и дополнительным "почтовым" файлом.
Можно попробовать где-то так (стр.456 примерно):
if( VM_REGISTRATION_TYPE == 'NO_REGISTRATION' || (VM_REGISTRATION_TYPE == 'OPTIONAL_REGISTRATION' && empty($d['register_account'] ) ) ) {
   $auth['user_id'] = $uid;
   $auth['username'] = $d['email'];
   $_SESSION['auth'] = $auth;
   ТУТ! (или не тут?)
}
Запрос на выборку * из #__{vm}_user_info по $auth['user_id'] + отправка письма
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

hdsite

  • Осваиваюсь на форуме
  • 13
  • 3 / 5
Буду пробовать этот вариант, строчку нашел но не понял как делать выборку.
*

hdsite

  • Осваиваюсь на форуме
  • 13
  • 3 / 5
Готовых вариантов не было придумано? Может зря я код меняю?
*

barboss

  • Захожу иногда
  • 156
  • 4 / 2
  • Наполняю сайты контентом. Большие объемы.
Цитировать
<?php


//Query used to find whether to use Bill Address or Ship to address
$dboui = new ps_DB;
$q_oui = "SELECT * FROM #__vm_order_user_info ";

$q_oui .= "WHERE #__vm_order_user_info.order_id='$order_id' ORDER BY #__vm_order_user_info.order_info_id DESC";
$dboui->query($q_oui);

$oui_id = $dboui->f("order_info_id");


if($oui_id == $order_id){
$first_name = $dbb->f("first_name");
$last_name = $dbb->f("last_name");
$address1 = $dbb->f("address_type_name");
$address2 = $dbb->f("address_2");
$city = $dbb->f("city");
$state = $dbb->f("state");
$address_country = $dbbt->f("country");
$zip = $dbb->f("zip");
$H_PhoneNumber = $dbb->f("phone_1");
$H2_PhoneNumber = $dbb->f("phone_2");
$H_user_email = $dbb->f("user_email");



}
else {
$first_name = $dboui->f("first_name");
$last_name = $dboui->f("last_name");
$address1 = $dboui->f("address_type_name");
$address2 = $dboui->f("address_2");
$city = $dboui->f("city");
$state = $dboui->f("state");
$address_country = $dboui->f("country");
$zip = $dboui->f("zip");
$H_PhoneNumber = $dboui->f("phone_1");
$H2_PhoneNumber = $dboui->f("phone_2");
$H_user_email = $dboui->f("user_email");
}

echo $first_name;
// echo $last_name;
echo $address1;
//echo $address2;
//echo $city;
//echo $state;
//echo $address_country;
//echo $zip;
echo $H_PhoneNumber;
//echo $H2_PhoneNumber;
echo $H_user_email;


echo $db->f("ip_address");

?>


И еще код для извлечения номера заказа и суммы, может потребоваться для партнерок
Цитировать
<?php
$order_subtotal = round( $db->f("order_subtotal")+$tax_total-$discount_total, 2);
echo '
Order_id: '.$order_id.'<br />
Total: '.$order_subtotal;
?>

*

barboss

  • Захожу иногда
  • 156
  • 4 / 2
  • Наполняю сайты контентом. Большие объемы.
Все оказалось даже проще. Код выше работает только после оформления заказа. Если нужно выудить информацию до оформления заказа нужно использовать след. конструкцию
Цитировать
$user_id = $auth['user_id'];

$dbb = new ps_DB;
$q = "SELECT * FROM #__vm_user_info ";
$q .= "WHERE user_id ='".$user_id."' ";


$dbb->setQuery($q);
$dbb->query();

echo $dbb->f("first_name");
echo $dbb->f("address_type_name");
echo $dbb->f("phone_1");
echo $dbb->f("user_email");
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Валидация способа оплаты без перезагрузки страницы

Автор sashgera

Ответов: 8
Просмотров: 2591
Последний ответ 24.09.2015, 12:21:10
от sashgera
Запретить пользователям редактировать свои данные

Автор Messir

Ответов: 26
Просмотров: 4148
Последний ответ 15.02.2015, 19:20:43
от Messir
Данные плательщика в заказе: как изменить

Автор tigra-uki

Ответов: 6
Просмотров: 2077
Последний ответ 12.03.2013, 16:17:35
от tigra-uki
Как сделать так что бы после подтверждения заказа все данные покупателя обнулялись

Автор alexspi

Ответов: 10
Просмотров: 1608
Последний ответ 14.12.2012, 18:55:12
от gelx
Обновление страницы при регестрации/авторизации VirtueMart

Автор zoira

Ответов: 1
Просмотров: 1671
Последний ответ 16.05.2012, 10:21:41
от SnowMan