Перейти к содержимому


Фотография
- - - - -

Страница спасибо за покупку


Лучший Ответ SmetDenis , 26 December 2013 - 13:25

Да я это уже сделал (даже не затронув ядро), но как мне в материалле получить ID заказа? В материал вывожу модуль, и вот в нем пытаюсь из сессии выдернуть, но не получается, может подскажете как?

Каким образом ID заказа попадет в сессиию? Нужно сначала сохранить его туда.


Тогда уж в контроллере корзины напишите после создания заказа
$this->app->jbsession->set('last_order_id', $item->id, 'order');
В вашем шаблоне (видимо модуля или страницы "спасибо")
$orderId = App::getInstance('zoo')->jbsession->get('last_order_id', 'order');
Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 16

#1 promo

promo

Отправлено 25 December 2013 - 18:49

Как сделать так чтобы при "Заказ без оплаты" после того как пользователь в корзине нажмет кнопку "Отправить",

его направило на страницу с текстом "Спасибо за покупку" ?

 

Сейчас пороисходит следующее - пользователь жмет на кнопку "Отправить" (или оформить заказ), страница перезагружается и выводится "Ваша корзина пуста".


  • 0

#2 dimkarc

dimkarc

Отправлено 25 December 2013 - 19:47

ну так исправьте просто этот текст да и все :) 


  • 0

#3 Sliapy

Sliapy

Отправлено 25 December 2013 - 20:52

Посмотрите эту тему - http://forum.jbzoo.c...-blagodarnosti/


  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#4 promo

promo

Отправлено 25 December 2013 - 21:20

Там описывается вариант с платежными системами (человек их включил), я же спрашиваю про "заказ без оплаты".

Меня сейчас вообще при "отправить" не перекидывает на \media\zoo\applications\jbuniversal\templates\catalog\renderer\payment_manual\_default.php

 

Проверял так: 

echo $view->order->id;
exit();

Сообщение отредактировал promo: 25 December 2013 - 21:20

  • 0

#5 Sliapy

Sliapy

Отправлено 25 December 2013 - 22:16

Вообще, после оформления должно выводится сообщение об успешном заказе. Возможно, у Вас в шаблоне Joomla отсутствует код

<jdoc:include type="message" />

который отвечает за вывод системных сообщений.


  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#6 mentat_ij

mentat_ij

Отправлено 26 December 2013 - 03:49

Вообще, после оформления должно выводится сообщение об успешном заказе. Возможно, у Вас в шаблоне Joomla отсутствует код

<jdoc:include type="message" />

который отвечает за вывод системных сообщений.

 

точно, вот чего у меня в шаблоне небыло, и мне пришлось в той теме как тапором код рубить!

 

PS: Извините за минус в репутации, по запаре не туда нажал


  • 0

#7 promo

promo

Отправлено 26 December 2013 - 10:56

Вообще, после оформления должно выводится сообщение об успешном заказе. Возможно, у Вас в шаблоне Joomla отсутствует код

 

Да, если его вставить в шаблон то выводиться это сообщение, но мне требуется сделать именно отдельной страницей с версткой:

 

http://clip2net.com/s/6t6OEz 


Сообщение отредактировал promo: 26 December 2013 - 10:57

  • 0

#8 promo

promo

Отправлено 26 December 2013 - 11:43

Скажите, а как можно получить ID заказа, после того как пользователь отправит форму заказа?

Где происходит добавление в БД, чтобы выдернуть его ID с помощю mysql_insert_id() ?

Я бы этот ID в сессию поместил и уже потом вывел на нужной странице....

Или как вообще правильней поступить?

Странно вообще что нет нормальной страницы с благодарностью в магазине...


Сообщение отредактировал promo: 26 December 2013 - 11:44

  • 0

#9 promo

promo

Отправлено 26 December 2013 - 12:20

Нашел где /media/zoo/applications/jbuniversal/framework/controllers/basket.php

 

Вот этот код в этом файле отвечает за сохранение заказа в БД, а также редирект с мессенджем:

            // save item if it is valid
            if ($error) {
                $this->app->system->application->setUserState($sessionFormKey, serialize($post));
                $this->app->jbnotify->warning(JText::_('JBZOO_CART_SUBMIT_ERRROS'));

            } else {
                $user = JFactory::getUser();

                $nowDate     = $this->app->date->create()->toSql();
                $nowDateTime = new DateTime($nowDate);
                $date        = JHTML::_('date', 'now', JText::_('Y-m-d H:i:s')) . ' (GMT ' . ($nowDateTime->getOffset() / 3600) . ')';

                $item->name        = $this->type->name . ' #__ID__ / ' . $date . ($user->email ? ' / ' . $user->email : '');
                $item->alias       = $this->app->alias->item->getUniqueAlias($item->id, $this->app->string->sluggify($item->name));
                $item->state       = 1;
                $item->modified    = $nowDate;
                $item->modified_by = $user->get('id');

                $timestamp = time();
                if ($timestamp < $this->app->system->session->get('ZOO_LAST_SUBMISSION_TIMESTAMP') + BasketJBUniversalController::TIME_BETWEEN_PUBLIC_SUBMISSIONS) {
                    $this->app->system->application->setUserState($sessionFormKey, serialize($post));
                    throw new AppException('You are submitting too fast, please try again in a few moments.');
                }

                $this->app->system->session->set('ZOO_LAST_SUBMISSION_TIMESTAMP', $timestamp);

                foreach ($elementsConfig as $element) {
                    if (($element = $item->getElement($element['element'])) && $element instanceof iSubmissionUpload) {
                        $element->doUpload();
                    }
                }

                $item->getParams()->set('config.primary_category', 0);
                $this->app->event->dispatcher->notify($this->app->event->create($item, 'basket:beforesave', array('item' => $item, 'appParams' => $appParams)));
                $this->app->event->dispatcher->notify($this->app->event->create($submission, 'submission:beforesave', array('item' => $item, 'new' => true)));
                $this->app->table->item->save($item);

                $item->name = JString::str_ireplace('__ID__', $item->id, $item->name);

                $this->app->table->item->save($item);
                $this->app->event->dispatcher->notify($this->app->event->create($item, 'basket:saved', array('item' => $item, 'appParams' => $appParams)));

                $this->app->jbcart->removeItems();

                $orderDetails = JBModelOrder::model()->getDetails($item);
                if ((int)$appParams->get('global.jbzoo_cart_config.payment-enabled') && $orderDetails->getTotalPrice() > 0) {
                    $msg = JText::_('JBZOO_CART_SUCCESS_TO_PAYMENT_MESSAGE');
                    $this->setRedirect(JRoute::_($this->app->jbrouter->basketPayment($Itemid, $appId, $item->id), false));

                    return;

                } else {
                    $msg = JText::_('JBZOO_CART_SUCCESS_MESSAGE');
                    $this->setRedirect(JRoute::_($this->app->jbrouter->basketSuccess($Itemid, $appId), false), $msg);

                    return;
                }
            }

  • 0

#10 SmetDenis

SmetDenis

Отправлено 26 December 2013 - 12:43

Да, если его вставить в шаблон то выводиться это сообщение, но мне требуется сделать именно отдельной страницей с версткой:   http://clip2net.com/s/6t6OEz

Не могу посмотреть скриншот - 404.
 

Странно вообще что нет нормальной страницы с благодарностью в магазине...

Есть. Можете в этих шаблонах написать то что вам хочется.
cb3_200x0.png

Вот так можно узнать ID созданного заказа внутри шаблона
gov_200x0.png

Либо,
можно сделать редирект сразу на произвольную страницу, но для этого нужно поправить код
Посмотрите, как это предложено сделать тут
http://forum.jbzoo.c...aza/#entry21180

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



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





Click to return to top of page in style!