[msOptionsPrice2] - теперь с весом товаров.
[msOptionsPrice2] — (1.0.5-beta) небольшое обновление. Добавлен вес для характеристик товара.
Для смены веса на фронте сайта в зависимости от характеристики вес товара необходимо обернуть
добавлены настройки пакета:
show_count — показывать кол-во товара на странице
show_weight — показывать вес товара на странице
allow_zero_weight — разрешить товар с нулевым весом
В корзине соответственно получаем товар с нужным весом
Особо актуально при расчете стоимости доставки в зависимости от веса покупок.
ps. Всем спасибо за внимание. Новый функционал спонсировал Николай Ермошин — отдельное спасибо ему.
Для смены веса на фронте сайта в зависимости от характеристики вес товара необходимо обернуть
<span class="msop2 product_weight-[[*id]]">[[+weight]]</span>
Для удобствадобавлены настройки пакета:
show_count — показывать кол-во товара на странице
show_weight — показывать вес товара на странице
allow_zero_weight — разрешить товар с нулевым весом
В корзине соответственно получаем товар с нужным весом
Особо актуально при расчете стоимости доставки в зависимости от веса покупок.
ps. Всем спасибо за внимание. Новый функционал спонсировал Николай Ермошин — отдельное спасибо ему.
Поблагодарить автора
Отправить деньги
Комментарии: 12
Если не ошибаюсь, то в планах MS была реализация остатков. Было бы неплохо указывать кол-во на складе по опции товара.
ты про это modx.pro/components/5048-msoptionsprice2-now-with-the-remnants-products/
или я чтото не понял?
или я чтото не понял?
А пока MS не реализовали, есть вариант остатков у Володи, а также есть мой компонент modstore.pro/packages/ecommerce/msproductremains
где и как указать свои характеристики(добавленные при помощи возможности после обновы добавлять свои доп характеристики).чтобы можно было их увидеть в списке оптионпрайса вместе с цветом, размером и тегом?
Как характеристики устаканятся — так и сделаю…
просто по другому не догоняем как их добавить, кроме как добавлять характеристики через плагины, как советовалось тут bezumkin.ru/modx/minishop2/classes/910/
При таком способе вообще пропадает тогда надобность обновления минишопа с системой характеристик)
Но есть минусы:
-при большом количестве доп характеристик будет огромный список характеристик( в обновлении назначаются категории, что помогает исключать ненужные)
-сложность добавления характеристик относительного нового способа
При таком способе вообще пропадает тогда надобность обновления минишопа с системой характеристик)
Но есть минусы:
-при большом количестве доп характеристик будет огромный список характеристик( в обновлении назначаются категории, что помогает исключать ненужные)
-сложность добавления характеристик относительного нового способа
Как вывести минимальную цену size в категории товаров?
Привет, вот тут сниппет набросал demo.vgrish.ru/manager/?a=element/snippet/update&id=46
<?php
/** @var array $scriptProperties */
/** @var msop2 $msop2 */
$miniShop2 = $modx->getService('minishop2');
$msop2 = $modx->getService('msop2', 'msop2', $modx->getOption('msop2_core_path', null, $modx->getOption('core_path') . 'components/msop2/') . 'model/msop2/', $scriptProperties);
if (!($msop2 instanceof msop2)) return 'Could not load msop2 class!';
if (empty($product)) {$product = $modx->resource->id;}
$msProduct = $modx->getObject('msProduct', $product);
if (!($msProduct instanceof msProduct)) {
return 'This resource is not instance of msProduct class.';
}
$q = $modx->newQuery('msop2Option');
$q->where(array('key' => $name, 'active' => 1));
$q->select('id as option_id');
if ($q->prepare() && $q->stmt->execute()) {
$data = $q->stmt->fetch(PDO::FETCH_ASSOC);
$option_id = $data['option_id'];
}
$q = $modx->newQuery('msop2Price');
$q->sortby('CAST(price AS DECIMAL(10,2))', 'ASC');
$q->where(array('product_id' => $product, 'option' => $option_id,'active' => 1, 'operation' => 1));
$q->select('price as price_min, value as value');
$q->limit(1);
if ($q->prepare() && $q->stmt->execute()) {
$data = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
}
if (!empty($data)) {
$priceMin = $data[0]['price_min'];
}
else {
$priceMin = $msProduct->get('price');
}
$priceMin = $miniShop2->formatPrice($priceMin);
if (!empty($toPlaceholder)) {
$modx->setPlaceholder($toPlaceholder, $priceMin);
}
else {
return $priceMin;
}
вызов [[!msop2GetMinPrice?
&product=`[[+id]]`
&name=`size`
]]
Круто, спасибо! А случаем к mFilter2 его не привязать?
Уважаемые, если правильно понимаю это уже не работает в msOptionPrice2 версии 2.5.17
А как можно записать одни и те же опции всем товарам сразу? У меня есть порядка 10 опций, наценка на которые по всем товарным позициям одинаковая. А товаров порядка 500 пока, потом еще будут. Подскажите как сделать?
вот так примерно
— выбираем id всех товаров
— потом создаем им опции
— потом добавляем опции цены
— выбираем id всех товаров
— потом создаем им опции
— потом добавляем опции цены
<?php
$msop2 = $modx->getService('msop2', 'msop2', $modx->getOption('msop2_core_path', null, $modx->getOption('core_path') . 'components/msop2/') . 'model/msop2/');
if (!($msop2 instanceof msop2)) return '';
/* массив опций продуктов */
$data = array(
'class_key' => 'msProduct',
'context_key' => 'web',
'size' => array(
'100',
'200',
'300',
'400',
'500',
'600',
'700',
'800',
'900',
'1000'
)
);
/* массив опций и цен */
$options = array(
'100' => 10,
'200' => 20,
'300' => 30,
'400' => 40,
'500' => 50,
'600' => 60,
'700' => 70,
'800' => 80,
'900' => 90,
'1000' => '10'
);
$q = $modx->newQuery('msProduct');
$q->where(array('class_key' => 'msProduct'));
$q->select('id');
if ($q->prepare() && $q->stmt->execute()) {
$ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
}
foreach($ids as $id) {
$data['id'] = $id;
$modx->error->reset();
$response = $modx->runProcessor('resource/update', $data);
if ($response->isError()) {
print_r($response->getAllErrors());
continue;
}
foreach ($options as $value => $price) {
$msop = array(
'product_id' => $id,
'operation' => 1, // операция
'option' => 1, // опция size
'value' => $value
);
if (!$msop2Price = $modx->getObject('msop2Price', $msop)) {
$msop2Price = $modx->newObject('msop2Price');
$msop2Price->fromArray($msop);
}
$msop2Price->set('price', $price);
$msop2Price->save();
}
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.