Scorp Satex

Scorp Satex

С нами с 06 марта 2013; Место в рейтинге пользователей: #230
13 июня 2017, 18:20
0
У меня проблема такая же. Уже полгода как.

Выключил Minifyx — проблема стала появляться реже, но стабильно раз в 1-2 недели, и приходится чистить кеш. Тоже не знаю как это починить. :(

В логах ошибок сервака пусто. В логах модыкса часто одно и то же:

[2017-06-06 14:55:52] (ERROR @ /home/u00000/site.ru/www/core/model/modx/modcachemanager.class.php : 344) Error caching lexicon topic lexicon/ru/minishop2/default
[2017-06-06 14:55:52] (ERROR @ /home/u00000/site.ru/www/core/model/modx/modcachemanager.class.php : 344) Error caching lexicon topic lexicon/en/core/default
[2017-06-06 14:55:52] (ERROR @ /home/u00000/site.ru/www/core/model/modx/modcachemanager.class.php : 344) Error caching lexicon topic lexicon/ru/core/default
[2017-06-06 14:55:52] (ERROR @ /home/u00000/site.ru/www/core/model/modx/modcachemanager.class.php : 394) Error caching action map mgr/actions
Тоже мастерхост, тот же глюк с кешем как в сабже. Но у меня двухязычный сайт. Сделано через Babel и гейт.

Пример гейта:

<?php
// Работаем только на фронтенде и только с friendly urls
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr' || !$modx->getOption('friendly_urls')) {return;}

// Получаем запрашиваемый url
$alias = $modx->getOption('request_param_alias', null, 'alias', true);
$request = &$_REQUEST[$alias];

// Выбираем контексты с настройкой base_url
$q = $modx->newQuery('modContextSetting', array('key' => 'base_url', 'value:!=' => ''));
$q->select('context_key,value');

$contexts = array();
$tstart = microtime(true);
if ($q->prepare() && $q->stmt->execute()) {
	// Учитываем наш запрос в БД
	$modx->queryTime += microtime(true) - $tstart;
	$modx->executedQueries++;
	// Разбираем результаты
	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		$base_url = trim($row['value'], '/');
		$context = $row['context_key'];
		// Если запрос начинается с base_url какого-то контекста
		if (preg_match('/^('.$base_url.')\//i', $request)) {
			// То переключаемся на этот контекст
			// Web инициализируется в index.php - на него переключаться не нужно
			if ($context != 'web') {
				$modx->switchContext($context);
			}
			// Вырезаем base_url из запроса, чтобы MODX нашел ресурс по uri
			$request = preg_replace('/^'.$base_url.'\//', '', $request);
			// Дело сделано - выходим из цикла
			break;
		}
	}
}
MODX Revolution 2.5.7-pl (traditional)
PHP Version 5.4.45-1+mh1
miniShop2 2.4.10-pl
17 мая 2017, 19:39
+1
Спасибо, буквально недавно столкнулся с этой задачей. Буду пробовать.
12 мая 2017, 17:18
+1
Похоже на то что нет шаблона для письма.

Идите в админку сайта, там: MiniShop2 — Настройки — Статусы заказов.

Откройте статус, например новый, и посмотрите что у вас прописано в «Чанк письма покупателю:». Есть ли у вас этот чанк вообще?
10 мая 2017, 00:52
0
Решение: оказалось не подключались ксс стили от минишопа2, что лежат в /assets/components/minishop2/css/web/default.css. Из-за этого глючил скрипт, но не показывал ошибок. Подключил стили — все заработало как надо.
19 апреля 2017, 14:27
+2
Работа с разными контекстами. Языки сайта и валюта. Имеется в виду чтобы был учет заказов, в каком контексте они сделаны. В таблице заказы можно было бы их разделять, а то сейчас идет все в кучу, и рубли и евро считаются вместе, так что цифры сверху некорректны. Так же в зависимости от контекста где был сделан заказ, можно было бы менять шаблоны писем, подробнее я писал тут:
modx.pro/help/11876/
modx.pro/help/11773/
22 марта 2017, 15:49
0
Отлично, молодцы.

Может стоит и для modx.pro сделать англоязычную часть? Чтобы не русские пользователи там кучковались, и общались с себе подобными, а не пугались гор русских символов.
12 марта 2017, 16:25
0
Здравствуйте, компонент поддерживает лексиконы? Там уже создан перевод на английский язык или самому придется его создавать?
10 октября 2016, 16:23
0
Очень нужная вещь, ждем в репо. :)
10 октября 2016, 14:59
0
Подскажите пожалуйста — работать с плагином Office будет? Мне нужно чтобы в личном кабинете можно было посмотреть все отложенные товары.
03 октября 2016, 11:12
0
Мой знакомый программист нашел решение так:

Вот что он мне оставил, может кому пригодится, актуально только для 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 мы передаем в том же виде, как она поступила. Ждем результат выполнения запроса и выводим его на экран. Если приходит редирект — следуем редиректу.
10 сентября 2016, 20:07
0
Потому что я не программист, а верстальщик.
10 сентября 2016, 18:55
0
В моем случае, многие клиенты из России имеют Paypal, и поэтому мне такой вариант не подошел. :)
10 сентября 2016, 17:13
0
У меня сложней был случай, двуязычный сайт. Есть сайт магазин, два языка, две валюты. Рубли и евро. Писал костыль не я, а знакомый программист не знакомый с MODx.

Вот что он мне оставил, может кому пригодится, актуально только для 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 мы передаем в том же виде, как она поступила. Ждем результат выполнения запроса и выводим его на экран. Если приходит редирект — следуем редиректу.
10 сентября 2016, 12:01
+1
1. В старой версии miniShop2 2.2 — не было поддержки мультивалюты, пришлось писать костыли. Как в новой версии с этим обстоит — не знаю, нужно спросить автора модуля.

2. Да, именно для этого.

3. Корпоративный.
04 мая 2016, 19:33
0
На странице модуля написано:

Внимание:
Для подключения к ЯК необходимо чтобы ваш сайт работал по протоколу https.

Источник: modstore.pro/packages/payment-system/mspyacassa
13 апреля 2016, 14:35
0
Жаль, очень ждал, и надеялся что будет в Москве, в каком-нибудь бизнес центре. За город нет ни желания, ни времени ехать.

Желаю хорошо Вам там провести время, надеюсь в следующий раз вы сможете перебраться ближе к центру. :)
24 марта 2016, 14:33
0
Ура!

Спасибо за документацию!
20 января 2016, 11:59
0
Отлично! Как раз столкнулся с сложностями настройки корзины для многоязычных сайтов. Надеюсь будет возможность для разных контекстов делать разные корзины и там можно будет указывать какие там будут варианты оплаты и доставки.
17 января 2016, 22:52
+1
Вызвать этот блок некешированым? После открывающих скобок поставить восклицательный знак. Подробнее тут: rtfm.modx.com/revolution/2.x/making-sites-with-modx/tag-syntax раздел «Caching».