Не зарегистрирован
Вход
Забыли пароль?
Регистрация
Подписаться
Сэкономьте время — перед вопросом на форуме узнайте, как найти ответ быстрее
По техническим проблемам необходимо обращаться в Консультационный центр

Поиск по форуму: 

Приглашаем в блог Amiro.CMS. Регулярные обзоры, опыт, решения, практикумы.

Форум  ->   Разработка плагинов, вопросы по API  ->  Редирект с заказов сразу на главную

Раздел для разработчиков. Обсуждение создания плагинов, вопросы и пожелания по API Amiro.CMS

Добавлено: 06.11.12 14:48:57 #1



Регистрация: 22.10.12
Сообщений: 8


Обратиться по имени

Текст из запроса в Амиро:
Здравствуйте!
В процессе покупки после нажатия на кнопку "Оформить заказ" происходит переход на следующую страницу с сообщением типа: Спасибо Ваш закат принят и тд.
Я хочу сделать чтобы после нажатия на кнопку "Оформить заказ" происходил переход на главную страницу сайта со всплывающим окошком "Спасибо Ваш заказ принят и тд".
В шаблоне eshop_purchase.tpl кнопка находится в переменной ##processing_form##
Получается мне нужно будет добавить новую функцию редиректа и вставить её на страницу с сообщением: Спасибо Ваш закат принят и тд.???
Или же есть более простые методы решения данной проблемы?
PS. JavaScript использовать не хочу. так как он сначала грузит страницу с благодарностями и потом только перенаправляет на главную страницу и показывает благодарности.хочу в Php чтоб сразу без попытки загрузки страницы благодарностей.



Добавлено: 06.11.12 16:11:23 #2



Регистрация: 22.10.12
Сообщений: 8


Обратиться по имени

В шаблоне eshop_purchase.tpl а именно в:
<!--#set var="result_accepted" value="
%%thank_you_accepted%%
"-->
добавил:
<!--#set var="result_accepted" value="
##setvar @red_to_main = RedirectMain()##
##red_to_main##
%%thank_you_accepted%%
"-->

саму же функцию RedirectMain() прописал в front_functions.tpl:
function RedirectMain(){
header("Location: http://zhet.kz";
exit();
}



Но увы, он все равно пытался грузить третью страницу с благодарностями,недогрузив,перешел на главную страницу.
Мне нужно чтоб он вообще не терял секунды на загрузку третьей страницы с благодарностями,а сразу на главную.
Помогите люди



Добавлено: 07.11.12 16:31:10 #3

Амиро


Регистрация: 22.10.12
Сообщений: 73


Обратиться по имени

Здравствуйте,

FORTion:
Текст из запроса в Амиро:
Здравствуйте!
В процессе покупки после нажатия на кнопку "Оформить заказ" происходит переход на следующую страницу с сообщением типа: Спасибо Ваш закат принят и тд.
Я хочу сделать чтобы после нажатия на кнопку "Оформить заказ" происходил переход на главную страницу сайта со всплывающим окошком "Спасибо Ваш заказ принят и тд".
В шаблоне eshop_purchase.tpl кнопка находится в переменной ##processing_form##
Получается мне нужно будет добавить новую функцию редиректа и вставить её на страницу с сообщением: Спасибо Ваш закат принят и тд.???
Или же есть более простые методы решения данной проблемы?
PS. JavaScript использовать не хочу. так как он сначала грузит страницу с благодарностями и потом только перенаправляет на главную страницу и показывает благодарности.хочу в Php чтоб сразу без попытки загрузки страницы благодарностей.


Основной проблемой тут является то, что очистка корзины происходит как раз на последнем шаге оформления заказа, реализована она с помощью JS API, поэтому страницу грузить все же придется, или же нужно будет выносить этот функционал на главную страницу.

Если вы все же решили отказаться от последнего шага, то наиболее простым способом решения проблемы является добавление в /_local/front_functions.php следующего кода:

define('AMI_FIRE_ON_SYSTEM_START', TRUE);

AMI_Event::addHandler('on_order_after_status_change', 'onOrderAfterStatusChange', AMI_Event::MOD_ANY);

function onOrderAfterStatusChange($name, array $aEvent, $handlerModId, $srcModId){
if($aEvent['status'] == 'accepted'{

header('location: '.$GLOBALS['ROOT_PATH_WWW']);

exit();

}

return $aEvent;

}



Добавлено: 08.11.12 09:17:32 #4




Регистрация: 03.07.07
Сообщений: 940


Обратиться по имени

Только аккуратнее, тут много незадокументированных функций, которые, вообще говоря, могут измениться:
dk:
define('AMI_FIRE_ON_SYSTEM_START', TRUE);

и это:
dk:
AMI_Event::addHandler('on_order_after_status_change', 'onOrderAfterStatusChange', AMI_Event::MOD_ANY);



Готовые модули для Амиро - от бесплатных модулей до модулей импорта и геотаргетирования
Более 65 модулей, более 1100 внедрений модулей.
Добавлено: 09.11.12 11:04:16 #5



Регистрация: 22.10.12
Сообщений: 8


Обратиться по имени

dk:
Если вы все же решили отказаться от последнего шага, то наиболее простым способом решения проблемы является добавление в /_local/front_functions.php следующего кода:

define('AMI_FIRE_ON_SYSTEM_START', TRUE);

AMI_Event::addHandler('on_order_after_status_change', 'onOrderAfterStatusChange', AMI_Event::MOD_ANY);

function onOrderAfterStatusChange($name, array $aEvent, $handlerModId, $srcModId){
if($aEvent['status'] == 'accepted'{
header('location: '.$GLOBALS['ROOT_PATH_WWW']);
exit();
}
return $aEvent;
}



Вот это прикол! Он все равно пытался грузить третью страницу. Но потом перешел на главную и при этом не выполнился заказ и не очистилась корзина.


Мой код работал лучше?)У меня тож пытался грузить третью страницу, но корзина очистилась и заказ выполнился.





Создать новую тему

Всего тем: 6629
Всего сообщений: 27746
Всего зарегистрированных пользователей: 48914
Последний зарегистрированный пользователь: user74945798