Jump to content


Photo
- - - - -

Отправка e-mail покупателю


  • This topic is locked This topic is locked
12 replies to this topic

#1 colorof

colorof
  • JBZoo User (rus)
  • User rate: ~
  • posts: 9
  • topics: 6

Posted 17 December 2012 - 05:23

Посмотрел вопросы других относительно этого вопроса, но ничего толкового не нашел.

Все привыкли, что при заказе в магазине покупателю всегда отсылается копия письма для сверки заказа, в случае с jbzoo если покупатель не зарегистрирован, а просто ввел свой е-мейл, то ему ничего не отсылается. Как сделать отправку письма так, что бы при обновлении приложения все не слетело?
  • 0

#2 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 17 December 2012 - 16:38

Отправка почты происходит в событии Zoo "basket:saved"

Пример реализации можете посмотреть тут
/media/zoo/applications/jbuniversal/framework/events/jbevent.basket.php

Собственное событие можно объявить тут (это плагин-пример для работы с событиями Zoo)
plugins/system/zooevent/zooevent.php
Тогда оно никуда не денется после обновления.

Получить поле почты можно следующим образом
<?php print_r($item->getElement('<ID элемента почты>')->data());


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 ratamahatta

ratamahatta
  • JBZoo User (rus)
  • User rate: 0
  • posts: 18
  • topics: 4

Posted 31 December 2012 - 06:10

smet.denis:
Доброго дня!
Прошу простить незнание, за тем и обращаюсь, чтобы его уменьшить:) Основам php и т.п. учить не прошу, если не затруднит дайте короткую инструкцию в какой файл в какое место какой код нужно вставить:)
Думаю многие скажут спасибо:)
  • 0

#4 khpvolga

khpvolga
  • JBZoo User (rus)
  • User rate: 0.1
  • posts: 285
  • topics: 35

Posted 31 December 2012 - 06:50

smet.denis:
Доброго дня!
Прошу простить незнание, за тем и обращаюсь, чтобы его уменьшить:) Основам php и т.п. учить не прошу, если не затруднит дайте короткую инструкцию в какой файл в какое место какой код нужно вставить:)
Думаю многие скажут спасибо:)

а если в несколько файлов вставлять? а если вы там одну запятую пропустите и zoo рухнет? а если еще в базу MySQL таблицу надо будет добавить? а если вы в базе лишний символ вставите и весь сайт рухнет?
а если вы вставите, используя обычный блокнот - скорее всего так и будет - то слетит кодировка, а?

т.е. простыню писать придется не только по вставке кода, но и по использованию того же Notepad++ и phpMyAdmin, не?)))))

и как вы таким образом уменьшите свое незнание? да ни на гулькин нос оно не уменьшится!!
учиться, учиться и еще раз учиться - как говориТ великий денис, как учит великое джбзоо!!)))
  • 0

#5 ratamahatta

ratamahatta
  • JBZoo User (rus)
  • User rate: 0
  • posts: 18
  • topics: 4

Posted 31 December 2012 - 10:45

khpvolga:

Времени, потраченного вами на ответ и количества символов, которые вы набрали, думаю, хватило бы для типовой инструкции.

Всех возможных ситуаций не описать. Но я и не прошу инструкцию на все случаи жизни. Есть конкретная ситуация и есть конкретное решение. И если нашлось время на ответ, то почему бы не сделать этот ответ понятным для большинства.

Редактирование файлов и таблиц БД проблем не вызывает, да и в PHP немного понимаю, не шибко, но немного есть.
Подход "изучите весь PHP, JS, HTMS, CSS, и т.п. а потом и спрашивайте" думаю немного не для данной ситуации.. Тогда и спрашивать не о чем будет.
Этот форум для того и существует, чтобы те, кому не хватает знаний их почерпнули, а те у кого они есть (знания) при желании поделились ими, а не носом крутили и строили из себя "знатоков".
А знания лучше усваиваются на практике, если конечно по ходу дела задаешь себе вопросы что, откуда, куда и почему.

Если же данная инструкция требует значительных трудозатрат и выльется в портянку или просто не хочется этим заниматься, почему бы просто не написать об этом? Зачем флудить?

Ваше сообщение имеет 0% полезной информации по теме вопроса.
  • 0

#6 ratamahatta

ratamahatta
  • JBZoo User (rus)
  • User rate: 0
  • posts: 18
  • topics: 4

Posted 31 December 2012 - 10:59

HTMS


Прошу извинить за опечатку )))
  • 0

#7 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 31 December 2012 - 11:25

Вижу вы не читали моего сообщения или не попытались вникнуть... хотя бы пройти по указанным адресам ;)

Открываете файл plugins/system/zooevent/zooevent.php
и раскоментировать все до строки
"// register and connect events"

Регистрируете собственный обработчик события для корзины
$zoo->event->register('plgSystemZooevent');
$zoo->event->dispatcher->connect('basket:saved', array('plgSystemZooevent', 'basketSaved'));

Добавляете метод "basketSaved" в этом же плагине, внутри делаете то что хотите с материалом
Пример  в закомментированом методе itemSaved или тот файл который я указывал выше.
Как из объекта $item получить нужные данные - написано опять же выше.

не забывает активировать плагин в менеджере плагинов Joomla

PS Очень печально, что вы даже не попытались. Иначе бы совершенно другие вопросы возникли... ;)
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#8 ratamahatta

ratamahatta
  • JBZoo User (rus)
  • User rate: 0
  • posts: 18
  • topics: 4

Posted 31 December 2012 - 15:10

Вижу вы не читали моего сообщения или не попытались вникнуть... хотя бы пройти по указанным адресам ;)
PS Очень печально, что вы даже не попытались. Иначе бы совершенно другие вопросы возникли... ;)

Читал, не понял, от того и спросил.
  • 0

#9 mail

mail
  • JBZoo User (rus)
  • User rate: 0
  • posts: 19
  • topics: 4

Posted 09 February 2013 - 12:25

Пробую делать так

   public function basketSaved($event) {

        $params = $event->getParameters();
        $appParams = $params['appParams'];
        $item      = $params['item'];
        $subject   = JText::_('JBZOO_CART_NEW_ORDER_CREATE');
      $userEmail = print_r($item->getElement('E-mail')->data());
        // $userEmail  = $item->getElement('<E-mail>')->data();
        $userLayout = $appParams->get('global.jbzoo_cart_config.email-user-layout');
        $app->jbemail->sendByItem($userEmail, $subject, $item, $userLayout);
      // echo 'Тест';
      // $mainframe->close();
   }
После этой строки
      $userEmail = print_r($item->getElement('E-mail')->data());

происходит ошибка
Fatal error: Call to a member function data() on a non-object in /home/dbmm/from-prc.net/www/plugins/system/zooevent/zooevent.php on line 126

Думаю что не правильно указываю ID поля для EMAIL, брал Name из настройки полей
  • 0

#10 mail

mail
  • JBZoo User (rus)
  • User rate: 0
  • posts: 19
  • topics: 4

Posted 10 February 2013 - 06:12

Через zooevent сделать не удалось возникла проблема где брать 
$app = self::app();
Однако удалось реализовать в jbevent.basket.php

public static function saved($event)
    {
        $app = self::app();

        $params = $event->getParameters();

        $appParams = $params['appParams'];
        $item      = $params['item'];
        $subject   = JText::_('JBZOO_CART_NEW_ORDER_CREATE');

        $adminEmail  = $params['appParams']->get('global.jbzoo_cart_config.admin-email');
        $adminLayout = $appParams->get('global.jbzoo_cart_config.email-admin-layout');
        $app->jbemail->sendByItem($adminEmail, 'Заказ FROM-PRC.NET', $item, $adminLayout);

        $userEmail  = JFactory::getUser()->email;
        if ($userEmail == '') 
		 $userEmail = $item->elements['635c2c09-fa86-458e-a40f-e01f986b1a29'][0]['value'];
        $userLayout = $appParams->get('global.jbzoo_cart_config.email-user-layout');
        $app->jbemail->sendByItem($userEmail, $subject, $item, $userLayout);
    }

Думаю что неплохо было бы сделать нечто похожее но адекватно написанное в стандартной поставке.
При отсутствии емайла делать попытку прочтения элемента с именем email или e-mail

  • 0




Click to return to top of page in style!