Воеводский Михаил

Воеводский Михаил

С нами с 07 февраля 2013; Место в рейтинге пользователей: #28
17 октября 2015, 20:40
0
Добавляйте это как отдельный товар в корзине.
15 октября 2015, 14:27
0
1) В этот столбец записывается привязанный к товару источник файлов.
14 октября 2015, 23:51
+2
Есть такое дело.

Программисты из Санкт-Петербурга, разыскиваю вас!
Работа в офисе на полный день.
14 октября 2015, 20:23
+1
Создай issue в официальном репозитории.
Явно напрашивается подстановка расширения от типа файлов по умолчанию.
14 октября 2015, 15:59
0
Причина верная.

Правильнее использовать параметры &prepareTVs и &processTVs.
12 октября 2015, 17:16
1
+2
$cartArray = $cart->get(); // Массик товаров в корзине
$cartProduct =	$cartArray[$key]; // Один товар в корзине
Ты получаешь сначала весь массив корзины, затем обращаешься только к одному ее элементу, который определен ключом $key — тот элемент, с которым производится действие (добавление, изменение) в данный момент. Но задача — обработать все элементы. Соответственно, необходимо пройти по всему массиву и обработать его:

foreach($cartArray as $cartProduct) { // Запускаем цикл прохода по всем товарам в корзине
	$price = $cartProduct['price']; // Один элемент корзины
}
Следующий важный момент: изменять необходимо оригинальную цену, а не ту, которая в корзине. Пример: один раз изменили цену при достижении 5 шт., пользователь погулял по сайту, в корзине стало 20 шт. — если при втором изменении мы возьмем за основу цену, которая записана в корзине, скидка получится чрезмерной.

Если 2 варианта решения:
1) В options товара в корзине записывать оригинальную цену при добавлении
2) Каждый раз получать оригинальную цену из объекта товара

Второй вариант рациональнее.

switch ($modx->event->name) {
	case 'msOnAddToCart': case 'msOnChangeInCart':

		$cartArray = $cart->get();
		$cartStatus = $cart->status();
		$totalCount = $cartStatus['total_count'];

		if ($totalCount < 5) $coeff = 1;
		elseif ($totalCount < 10) $coeff = 0.8;
		elseif ($totalCount < 20) $coeff = 0.7;
		else $coeff = 0.6;

		foreach ($cartArray as &$cartProduct) {
			if ($product = $modx->getObject('msProduct', $cartProduct['id'])) {
				$cartProduct['price'] = $product->price * $coeff;
			}
		}
		
		$cart->set($cartArray);
		break;

}
12 октября 2015, 03:32
+1
foreach ($tmp as $cartProduct) {} тебе поможет. Если необходимо подробнее, скажи — напишу завтра с ПК.
07 октября 2015, 21:25
+5
Велосипед совершенно точно нужен!
Сергей, это великолепная вещь и крайне полезная!!!
Пакет собирай обязательно.
07 октября 2015, 11:34
0
«Костыли-сниппеты» — это такие вложенные вызовы. Из-за особенностей работы парсера необходимо избегать подобной вложенности. Либо через чанки (в простых случаях), либо через сниппеты. Если уж хочется использовать логику в шаблонах, смотрите в сторону Fenom — он больше возможностей предоставит.
07 октября 2015, 10:09
0
В классе корзины переопредели 3 метода: get(), status(), clean(). Сниппет вывода корзины сделай свой, удобнее всего скопировать msCart и его изменить.
Сохранение принадлежности товара к определенному контексту в оформленном заказе — самое простое, достаточно при добавлении в корзину передавать эту информацию в options товара, дальше справится штатный механизм.

Фактически, задача решается за несколько часов.
05 октября 2015, 01:56
+1
Если будет транспортник, зачем заставлять пользователя создавать ТВ? Их можно тоже создать при установке и связать с созданными шаблонами.
30 сентября 2015, 00:53
0
Есть заготовка по интеграции Amo и MODX. Напишите на почту (ссылка в профиле), обсудим детали.
23 сентября 2015, 20:31
0
Владимир, написал в скайп.
22 сентября 2015, 03:06
+1
Посмотрите Lingua.
21 сентября 2015, 20:51
0
Напишите на поту (ссылка в профиле).
21 сентября 2015, 16:53
0
Спасибо за напоминание.
21 сентября 2015, 16:50
0
Пока страница с написанным и неотправленным комментарием висела, уже все подробно обсудили :)
21 сентября 2015, 16:49
0
В таблице modx_site_content хранятся объекты modResource и его наследники.
14 сентября 2015, 15:28
0
Добавьте еще одного поставщика с новым ключом.