Вопросы

После удаления товара через API корзине не обновляется

Добрый день.
Объясню сначала задачу:
1. При заказе товара с определенного раздела, в корзину нужно добавить товар с определенным ID (товар-доставка)
2. Также все должно корректно работать при обновлении корзины и удалении товаров из корзины (если в корзине не осталось товаров с данного раздела, то и доставку нужно убирать)
Но почему-то у меня доставка удаляется но висит в корзине до перезагрузки страницы.

Вот мой стремный код если есть решение изящнее то буду очень благодарен. По сути — нужно установить определенную сумму доставки при наличии в корзине товаров из определенного раздела (категории)

<?php
switch ($modx->event->name) {
	case 'msOnBeforeAddToCart':
		$delivery = 0;
		$parent = $product->get('parent');
		if ($parent == 49 || $parent == 51 || $parent == 52 || $parent == 53 || $parent == 54 || $parent == 55 || $parent == 56) {
			foreach($cart->get() as $key => $value){
				if ($value['id'] == 460) {
					$delivery++;
				}
			}
			if ($delivery == 0) {
				$cart->add(460);
			}
		}
	
	break;
	case 'msOnChangeInCart':
	case 'msOnRemoveFromCart':
		$delivery = 0;
		$parent = 0;
		foreach($cart->get() as $key => $value){
			if ($value['id'] == 460) {
				$delivery++;
				$keys = $key;
			}
			if ($product = $modx->getObject('msProduct', $value['id'])) {
				$pparent = $product->get('parent');
				if ($pparent == 49 || $pparent == 51 || $pparent == 52 || $pparent == 53 || $pparent == 54 || $pparent == 55 || $pparent == 56) {
					$parent++;
				}
			}
		}
		if ($delivery == 0 && $parent != 0) {
			$cart->add(460);
		}
		else if ($delivery == 1 && $parent == 0) {
			$cart->remove($keys);
		}
	
	break;

}
Андрей
11 июня 2019, 20:51
modx.pro
1 143
0

PdoPage дает странные урл

Хочу сделать пагинацию и решил сделать на pdopage.

Написал по документации

<div class="rows">
        [[!pdoPage?
            &parents=`[[*id]]`
            &limit=`36`
            &tpl=`item`
            &includeTVs=`img, price, title1, discount`
            &ajaxMode=`default`
            &pageLinkScheme=`/[[+pageVarKey]]-[[+page]]`
        ]]
    </div>
    [[!+page.nav]]
и когда нажимаю а страницу — переходит на site.com/catalog/catalog/?page=2 // Появляется лишний /catalog/
и нормальная пагинация не генерируется. Как сделать что бы урл был как site.com/catalog/?page=2?

(P.S. Весь сайт на чпу)
Марк
11 июня 2019, 19:10
modx.pro
789
0

Каким образом можно выбрать публикации только за последние три недели?

Сделал, как было предложено — создал сниппет getDateWeekAgo

<?php
$formatDate = date('Y-m-d H:i:s');
$date = new DateTime($formatDate);
$date->modify("-21 day");
return $date->format('Y-m-d H:i:s');

в котором формируется соответствующая дата и разместил код.

[[!pdoPage?
&element=`getTickets`
&tpl=`TicketArticleOnlyRow`
&includeContent=`1`
&parents=`[[*parent]]`
&limit=`3`
&resources=`-[[*id]]`
&sortby=`RAND()`
&includeTVs=`tvimageticket`
&where=`{«publishedon:>»:"[[getDateWeekAgo]]"}`
]]

Подозреваю, что-то делаю не так.
Игорь
11 июня 2019, 15:31
modx.pro
858
0

Как массово удалить лишние товары miniShop2?

Доброе время суток.

Как массово удалить лишние товары miniShop2?
SQL-запросом, нужно все поля перечислять, джойнить таблицы.
Как быстрее и проще?
Спасибо
Iskatel
10 июня 2019, 19:43
modx.pro
1 443
0

mFilter2 не скрывать товар если параметр пустой

Здравствуйте, есть задача от клиента.

Вводное

Есть сайт, продает оборудования для мясопереработки. В разделе есть разные машины, и так же некоторые детали. Есть например параметр «Производительность», это слайдер, и у машин он указан, но у деталей этого параметра пустой.

Что сейчас

Если пользователь в графе «Производительность» ставит от «1», то товары у которых ничего не указано в поле «Производительность» — исчезают со страницы.

Scorp Satex
10 июня 2019, 19:40
modx.pro
1 025
0

Скидка в зависимости от суммы заказа

Добрый день.
Направьте, что делаю не так.
Пытаюсь сделать скидку в зависимости от суммы заказа (если более 2500, то 20% скидка)
Что-то не пашет((
<?php
switch ($modx->event->name) {
	case 'msOnAddToCart':
    case 'msOnChangeInCart':
    case 'msOnRemoveFromCart':
    	
    	$cartArray = $cart->get();
        $cartStatus = $cart->status();
        $totalCount = $cartStatus['total_count'];
    	
		if ($total_cost >= 2500) {
			
	        foreach ($cartArray as &$cartProduct) { // Обрабатываем все товары корзины
	            if ($product = $modx->getObject('msProduct', $cartProduct['id'])) { 
	                $cartProduct['price'] = $product->get('price') * 0.8; 
	            }
	        }
	 
	        $cart->set($cartArray);
		}
		
	break;

}
Андрей
10 июня 2019, 18:28
modx.pro
1
1 171
0

Переключение опции в зависимости от дня недели

Доброго времени суток. Может кто подскажет как решить задачку. Система: MODX и Minishop2
Имеем: например 100 товаров и 5 из них с допполем disableOrder (радиокнопка) и значением Вкл/Выкл. В определенный день недели для заказа доступен только один из этих 5 товаров (т.е. параметр стоит в положении Вкл, остальные Выкл). На текущий момент переключается это всё ручками, наступил следующий день -> захожу в предыдущий товар, отключаю -> захожу в товар, который должен быть сегодня для заказа -> включаю. При этом — в зависимости от статуса disableOrder кнопка «Заказать» меняется на «Недоступно» и отключается функционал добавления в корзину (т.е. простым условием подменяется на кнопку пустышку без функционала). При этом сами товары видны, но заказать товар нельзя. Можно ли это дело автоматизировать?
Madao
10 июня 2019, 15:34
modx.pro
1 294
0

Отложенная оплата заказа

Ребята. привет!
Подскажите, пожалуйста, можно ли сделать следующим образом: Клиент создал ms2 заказ с выбранным методом оплаты с условным названием (Допустим «Оплата онлайн»), но его не редиректит на страницу оплаты, а просто подтверждается выполнение заказа (как при самовывозе по умолчанию). Затем, спустя какое-то время ему менеджер говорит, что заказ проверен и утвержден, оплатите. Он заходит на страницу, где можно указать номер заказа, сумму и ряд доп.полей для разных нужд.

Соответственно, нужно взять существующий заказ ms2 со статусом Новый и принудительно заставить его пройти операцию оплаты так, как он бы это сделал автоматически, если был бы по умолчанию с методом оплаты Сбербанком или любым другим платежным модулем (у меня сбербанк).

Иными словами, есть ли какой-то метод/процессор, который я могу вызвать, получив в коде объект заказа, чтобы после того, как форма с номером заказа и суммой отправилась — клиента редиректнуло на страницу оплаты сбера?
Ilya Gureshidze
10 июня 2019, 14:49
modx.pro
1 005
0

Форум

Существуют ли плагины/виджеты/tools для создания форума на cms modx, хостинге modhost.pro??
Заранее огромное спасибо.
Olga
10 июня 2019, 13:11
modx.pro
1 112
0

Доставка товару из категории

Добрый день.
Скажите, как сделать такую вещь:
Если в корзине присутствует товар из определенной категории, то нужно выбрать определенный тип доставки, а остальные для выбора заблокировать?
Пытался так:
в msCart
{foreach $products as $product}
        {set $product_parent[] = $product.parent}
    {/foreach}
И далее в msOrder
{if '18' in $product_parent} disabled{else}{/if}
Но, во первых, массив $product_parent отсутствует в msOrder, а во вторых тогда он отключить все способы доставки)
Андрей
10 июня 2019, 12:56
modx.pro
576
0