Klike

Klike

Был в сети 30 мая 2024, 12:06
Заказы не принимаю
Потому что с такой структурой:

  • Канцелярия 1
    • Ручки
      • Parker
      • Бренд 2

  • Канцелярия 2
    • Ручки
      • Parker 2
      • Бренд 3

И без включения «Использовать вложенные URL», к примеру, категории РУЧКИ начинают конфликтовать, потому как одинаковые алиасы создаются. В итоге все товары падают в корень сайта.
Можно ли использовать для оптовых цен на сайте? К примеру посетитель закинул в корзину товар по розничной и с определенного количества цены становятся оптовыми? Или не с количества, а с общей стоимости товаров в корзине?
Супер! Теперь отлично работает! И твой функционал классно можно использовать с количеством и ценой. Спасибо большое, Василий!
Можно ещё вопрос? :)

Искал решение по пересчету цен в корзине при стоимости свыше 10.000р., видел только по определенному количеству. В моём случае нужно писать сниппет и плагин на событие, и для динамического обновления (без обновления страницы) нужен скрипт. И в итоге вместо стандартного сниппета корзины вызывать свой. Я всё правильно понял?
<?php
// Параметры
$idd = $modx->getOption('idd', $scriptProperties, $modx->resource->id);
$tplIn1 = $modx->getOption('tplIn1', $scriptProperties, '@INLINE Товар в корзине, цена = [[+price]]'); 
$tplOut1 = $modx->getOption('tplOut1', $scriptProperties, '@INLINE Товара в корзине нет'); 
// Классы для работы
$pdo = $modx->getService('pdoTools');
$miniShop2 = $modx->getService('minishop2');
$miniShop2->initialize($modx->context->key, $scriptProperties);
$cart = $miniShop2->cart->get();
// Поехали
$found = false;
foreach($cart as $product) {
	if ($product['id'] == $idd) {
		$found = $product;
		break;
	}
}
return $found
	? $modx->getChunk($tplIn1, $found)
	: $modx->getChunk($tplOut1);
У меня предыдущий сниппет работает с tplIn и tplOut, поэтому в этом tplIn1 и tplOut1, в начале тоже добавил единицу к ним. Вообще, даже в буквах не выводит)
Вот твой пример, чуть подкорректирован, создал два чанка tplIn1 и tplOut1, товар в корзине, выводит, что товара нет (tplOut), что не так?
$found = false;
foreach($cart as $product) {
	if ($value['id'] == $idd) {
		$found = $product;
		break;
	}
}  //не было в твоём примере
return $found
	? $modx->getChunk('tplIn1', 'found') // здесь было ($tplIn, $found), ниже также
	: $modx->getChunk('tplOut1');
Наконец-то добился результата) Спасибо большое, Василий, за направление на путь истинный))
Чуть доработал код и вот результат:
<?php
// Параметры
$idd = $modx->getOption('idd', $scriptProperties, $modx->resource->id);
$tplIn = $modx->getOption('tplIn', $scriptProperties, '@INLINE Товар в корзине, цена = [[+price]]'); 
$tplOut = $modx->getOption('tplOut', $scriptProperties, '@INLINE Товара в корзине нет'); 
// Классы для работы
$pdo = $modx->getService('pdoTools');
$miniShop2 = $modx->getService('minishop2');
$miniShop2->initialize($modx->context->key, $scriptProperties);
$cart = $miniShop2->cart->get();
// Поехали
$found = false;
foreach($cart as $value) {
	if ($value['id'] == $idd) {
		$found = $value['id'];
		break;
	}
}
$found != false 
    ?   $result = $modx->getChunk('tplIn', 'found')
    :	$result = $modx->getChunk('tplOut');
return $result;
Теперь всё работает, как надо!
Спасибо, Василий за подсказки! Чем давать рыбу, лучше удочку))
<?php
$miniShop2 = $modx->getService('minishop2','miniShop2',
	MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties);
if (!($miniShop2 instanceof miniShop2)) return '';
$miniShop2->initialize($modx->context->key, $scriptProperties);

if (empty($idd)) {$idd = $modx->resource->id;}
$cart = $miniShop2->cart->get();
$kolvo = 0;
foreach($cart as $value)
	{if ($value['id'] == $idd)
		{$kolvo += $value['count'];}}
$modx->setPlaceholder('countP', $kolvo);

//вот этот кусок не знаю, нужен ли
$toPlaceholder = $modx->getOption('toPlaceholder',$scriptProperties,false);
if (!empty($toPlaceholder)) {
	$modx->setPlaceholder($toPlaceholder,$output);
	return '';
}
//конец "ненужного" куска
return $kolvo;
Сниппет таким образом:
[[!+countP? &idd=`[[+id:default=`[[*id]]`]]`]]
ID передаётся правильно (может лишнее, конечно, и в сниппете проверять на пустоту ID и в вызове сниппета), думаю ещё отправлять результат сниппета в плейсхолдер
[[!+countP? &idd=`[[+id:default=`[[*id]]`]]` &toPlaceholder=`countP`]]
и в кнопке условие сделать – если результат >0, то одна кнопка, если =0, вторая.

Но почему-то не всегда сниппет работает как нужно. Где что не так делаю?