Если ссылка на paypal.php содержит /en/ мы переадресуем этот запрос на /web/ контекст передавая в $_GET запросе дополнительный параметр "&isEng=1". Информацию POST мы передаем в том же виде, как она поступила. Ждем результат выполнения запроса и выводим его на экран. Если приходит редирект — следуем редиректу.
1. Удалил полностью MinifyX. Он оказывается у меня сжимал скрипты, даже не вызываясь в шаблоне, была настройка в админке.
2. Добавил в начало tpl.msOrder:
А в tpl.msCart строчку:
Все, словари больше не слетают во фронте.
Осталась только разобраться с jgrowl, там так и висит на другом контексте «ms2_cart_change_success».
Выключил Minifyx — проблема стала появляться реже, но стабильно раз в 1-2 недели, и приходится чистить кеш. Тоже не знаю как это починить. :(
В логах ошибок сервака пусто. В логах модыкса часто одно и то же:
Тоже мастерхост, тот же глюк с кешем как в сабже. Но у меня двухязычный сайт. Сделано через Babel и гейт.
Пример гейта:
MODX Revolution 2.5.7-pl (traditional)
PHP Version 5.4.45-1+mh1
miniShop2 2.4.10-pl
Идите в админку сайта, там: MiniShop2 — Настройки — Статусы заказов.
Откройте статус, например новый, и посмотрите что у вас прописано в «Чанк письма покупателю:». Есть ли у вас этот чанк вообще?
modx.pro/help/11876/
modx.pro/help/11773/
Может стоит и для modx.pro сделать англоязычную часть? Чтобы не русские пользователи там кучковались, и общались с себе подобными, а не пугались гор русских символов.
Вот что он мне оставил, может кому пригодится, актуально только для MiniShop2 2.2!
Описание проблемы:
1) Инициализация оплаты происходит по прямой ссылке paypal.php, вне зависимости от языковой версии.
2) При запросе paypal.php в контексте /en/* файл физически отсутствует на сервере и выдается ошибка 404. Так как информация запроса передается методом POST редирект в .htaccess файле не может помочь с этой проблемой. Возможно создание «симлинка» или копии файла paypal.php с физическим созданием папки /en/* на сервере, но при этом решении нужно изменять условия редиректов движка ModX с самыми интересными последствиями.
3) В условиях редиректов успешной и не успешной оплаты используется конструкция $modx->getOption('ms2_payment_paypal_success_id', null, 0) без указания контекста (языковой версии). При этом получение параметров cancel английской версии не работает.
4) paypal.class.php — файл отвечает за отправку и получение результатов с платежного шлюза. Файл при вызове не содержит информацию языковой версии, поэтому формирование платежной ссылки, а также распознавание результата (hash верификация) проходят только в рублях
Решение:
[index.php]
# Самое начало сайта
if(substr($_SERVER['REQUEST_URI'], 0, 50) == "/en/assets/components/minishop2/payment/paypal.php"){
$ch = curl_init();
$postvars = '';
foreach($_POST as $key=>$value) {
$postvars .= $key. "=". $value. "&";
}
$url = «site.ru».substr($_SERVER['REQUEST_URI'], 3)."&isEng=1";
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,3);
curl_setopt($ch,CURLOPT_TIMEOUT, 20);
$response = curl_exec($ch);
curl_close ($ch);
echo $response;
die();
}
# Описание:
Если ссылка на paypal.php содержит /en/ мы переадресуем этот запрос на /web/ контекст передавая в $_GET запросе дополнительный параметр "&isEng=1". Информацию POST мы передаем в том же виде, как она поступила. Ждем результат выполнения запроса и выводим его на экран. Если приходит редирект — следуем редиректу.
Вот что он мне оставил, может кому пригодится, актуально только для MiniShop2 2.2!
Описание проблемы:
1) Инициализация оплаты происходит по прямой ссылке paypal.php, вне зависимости от языковой версии.
2) При запросе paypal.php в контексте /en/* файл физически отсутствует на сервере и выдается ошибка 404. Так как информация запроса передается методом POST редирект в .htaccess файле не может помочь с этой проблемой. Возможно создание «симлинка» или копии файла paypal.php с физическим созданием папки /en/* на сервере, но при этом решении нужно изменять условия редиректов движка ModX с самыми интересными последствиями.
3) В условиях редиректов успешной и не успешной оплаты используется конструкция $modx->getOption('ms2_payment_paypal_success_id', null, 0) без указания контекста (языковой версии). При этом получение параметров cancel английской версии не работает.
4) paypal.class.php — файл отвечает за отправку и получение результатов с платежного шлюза. Файл при вызове не содержит информацию языковой версии, поэтому формирование платежной ссылки, а также распознавание результата (hash верификация) проходят только в рублях
Решение:
[index.php]
# Самое начало сайта
if(substr($_SERVER['REQUEST_URI'], 0, 50) == "/en/assets/components/minishop2/payment/paypal.php"){
$ch = curl_init();
$postvars = '';
foreach($_POST as $key=>$value) {
$postvars .= $key. "=". $value. "&";
}
$url = «site.ru».substr($_SERVER['REQUEST_URI'], 3)."&isEng=1";
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,3);
curl_setopt($ch,CURLOPT_TIMEOUT, 20);
$response = curl_exec($ch);
curl_close ($ch);
echo $response;
die();
}
# Описание:
Если ссылка на paypal.php содержит /en/ мы переадресуем этот запрос на /web/ контекст передавая в $_GET запросе дополнительный параметр "&isEng=1". Информацию POST мы передаем в том же виде, как она поступила. Ждем результат выполнения запроса и выводим его на экран. Если приходит редирект — следуем редиректу.
2. Да, именно для этого.
3. Корпоративный.
Источник: modstore.pro/packages/payment-system/mspyacassa
Желаю хорошо Вам там провести время, надеюсь в следующий раз вы сможете перебраться ближе к центру. :)