Баха Волков

Баха Волков

С нами с 10 ноября 2016; Место в рейтинге пользователей: #12
Алексей Шумаев
02 февраля 2018, 13:58
2
0
Ваш вопрос слишком объёмный, т.к. ответ на него будет порождать несколько новых вопросов…
Можно делать примерно так:

I. Сначала читаем про расширение товаров, добавляем новое поле для оптовой цены, например optPrice.
II.
1. Читаем заметку
2. Создаём плагин, в нём проверяем пользователя. Примерно так:
case 'pdoToolsOnFenomInit':
    $fenom->addAccessorSmart("site", "data", Fenom::ACCESSOR_PROPERTY);
            
    # определить принадлежность к группе оптовых
    $optGroupe = 2; # ваша группа оптовых
    $ws = 0; # пока это обычный юзер
    $user = $modx->user;
    $usergroups = $user->getUserGroups();
    if ($user->get('id') && in_array($optGroupe, $usergroups)) {
        $ws = 1; # а теперь - оптовик
    }
            
    $fenom->data = [
       'ws' => $ws
    ];       
break;
Теперь ВЕЗДЕ у вас есть переменная $.site.ws.
Fenom:
{if $.site.ws == 1}
	{$optPrice}
{else}
	{$price}
{/if}
III. В том же плагине на событие msOnBeforeAddToCart добавляем изменение цены для оптовиков, если оптовик.

Вроде всё. Но нюансов может быть множество )
Алексей
16 января 2018, 20:50
1
0
Добрый вечер! На странице списка товаров вызываю снипет так
[[!getRemains:toPlaceholder=`remains`? id=`[[+id]]`]]
[[+remains:lt=`1`:then=`нет`:else=`[[+remains]] шт.`]]

Постоянно выдается первый вариант «Нет».
Списко товаров вызывается при помощи сниппета mfilter2. Если добавляю в него такую конструкцию
'leftJoin' => [
'Remains' => [
'class' => 'msprRemains',
'on' => 'msProduct.id = Remains.product_id AND Remains.remains > 0'
]
],
'groupby' => 'msProduct.id',
'select' => [
'msProduct' => '*',
'Remains' => 'SUM(Remains.remains) as remains'
],

То остатки выводятся правильно, но перестает работать сортировка. При нажатии на сортировку все товары исчезают. Не подскажете в чем может быть причина. Заранее спасибо!

Вот полностью вызов сниппета

{'!mFilter2' | snippet: [
'paginator' => 'pdoPage',
'element' => 'msProducts',
'class' => 'msProduct',
'parents'=>$modx->resource->id,
'depth' => 10,
'filters'=> 'ms|price:number'
'tplFilter.outer.default'=>'mfilter-slider.tpl'
'tplFilter.row.default'=>'mfilter-number.tpl'
'tpl' => 'category-product.tpl',
'tplOuter' => 'mFilter2-outer.tpl',
'leftJoin' => [
'Remains' => [
'class' => 'msprRemains',
'on' => 'msProduct.id = Remains.product_id AND Remains.remains > 0'
]
],
'groupby' => 'msProduct.id',
'select' => [
'msProduct' => '*',
'Remains' => 'SUM(Remains.remains) as remains'
],
'limit' => 18,
'maxLimit' => 200,
'pageLimit' => 12,
'tplPage' => '@INLINE {$pageNo}',
'tplPageActive' => '@INLINE {$pageNo}',
'tplPageWrapper' => '@INLINE {$pages}',
'tplPagePrev' => '@INLINE <',
'tplPageNext' => '@INLINE >',
'tplPageSkip' => '@INLINE ...</span',
'tplPagePrevEmpty' => '@INLINE <<',
'tplPageNextEmpty' => '@INLINE >>',
'sortby' => '{«menuindex»:«ASC»}',
'where' => '{«template»:«4»}'
]}
Николай
29 декабря 2017, 13:36
1
0
Ну и в целом как обезопасить себя от подобных неприятностей?
Ставить пароль на папки manager connectors и core (https://modhost.pro/help/nginx). А так же была большая статья про безопасность где-то на сайте.
Дмитрий
26 декабря 2017, 14:17
1
0
вот и мне интересно, уверен что я что то не так делаю просто, тк впервые пользуюсь именно этим методом.

у меня есть шаблон категорий товара в самом шаблоне я вызываю msProducts в параметре — element, с помощью метода — pdoPage, он выводит все товары в нужной мне категории товаров, там в качестве шаблона вывода прописан чанк, который оформляет именно блоки этих товаров и в нем я инициализировал вот эту конструкцию

[[!msProductOptions? &product=`[[+id]]`]]

интересно что если вместо плейсхолдера вставить любой id из выведенного товара опции именного этого товара спокойно появляются
Баха Волков
02 декабря 2017, 08:08
1
0
Может вместо этого:

[[pdoField?&id=`{$product.parent}`&field=`pagetitle`]]

Сделать вот так:

{$product.parent | resource : 'pagetitle'}

?
Володя
30 ноября 2017, 18:45
1
+1
а чего его бороть? в ajax заверни и все.
Илья Уткин
02 ноября 2017, 20:07
1
0
Не знаю, получится ли так или нет, но попробуй заменить квадратные скобки на HTML-сущности
[[$MyChunk:replace=`[==&#91;`]]
Ну или в сниппете получить контент чанка с помощью xPDO и заменить их функцией str_replace
Воеводский Михаил
12 августа 2017, 10:44
1
+1
Только значения Наполнителей будут товарами.
В этом свои преимущества, как я написал — изменение цены такого наполнителя в одном месте, а не в каждом товаре по отдельности.

родилось вот такое решение
Как ни крути, любые варианты решения задач полезны. Не исключаю. что в некоторых случаях такое решение будет рациональнее, чем приплетать msAddLinked.
Баха Волков
07 августа 2017, 11:23
1
0
Добавь:
&tpl=`@INLINE <li><a href="[[+link]]" [[+attributes]] [[+classes]]>[[+menutitle]]</a>[[+wrapper]]</li>`