minishop2 и смена названия товара
Приветствую!
Вопрос такой, есть товар например «Дверь», у него есть выбор опций, размер цвет и т.д.
При добавлении в корзину хочу чтобы цвет размер попадали в название товара и сохранялись при заказе, т.е. в админке, чтобы тоже отображалось такое же название. Пока чтобы опции в строку джойнились
например «Дверь, Белый, 2000х800»
В будущем хочу чтобы дополнительные товары тоже были в названии.
Как мне сказали бухгалтера закон после нг выходит, типа надо все в одну строку, а точнее в одну позицию в чеке. Отсюда и загвоздка, т.к. в онлайн оплате все по отдельности выходит. Я использую сбер-эквайринг, туда опции не передаются.
Тут два варианта, либо править дополнение от Ильи mspSberbank, либо докручивать minishop2 и изначально пользователю показывать похожее название товара или вот в момент написания идея пришла, при создании заказа переназначить название.
пробовал плагине пробовал msOnBeforeAddToCart, но он все равно не сохраняет
Подскажите где(как) лучше реализовать? расширить класс(корзины, заказа)? или можно в плагине все это переиначить
Вопрос такой, есть товар например «Дверь», у него есть выбор опций, размер цвет и т.д.
При добавлении в корзину хочу чтобы цвет размер попадали в название товара и сохранялись при заказе, т.е. в админке, чтобы тоже отображалось такое же название. Пока чтобы опции в строку джойнились
например «Дверь, Белый, 2000х800»
В будущем хочу чтобы дополнительные товары тоже были в названии.
Как мне сказали бухгалтера закон после нг выходит, типа надо все в одну строку, а точнее в одну позицию в чеке. Отсюда и загвоздка, т.к. в онлайн оплате все по отдельности выходит. Я использую сбер-эквайринг, туда опции не передаются.
пробовал плагине пробовал msOnBeforeAddToCart, но он все равно не сохраняет
Подскажите где(как) лучше реализовать? расширить класс(корзины, заказа)? или можно в плагине все это переиначить
Комментарии: 6
Совсем недавно сталкивался, тоже самое хотел сделать, на событии msOnBeforeAddToCart задать товару в корзине name.
Не получилось, сразу в нескольких местах выскочили проблемы, ни сниппет msCart, ни чанки не готовы к такому повороту событий) все равно во многих местах тащится родной pagetitle от товара… я в итоге забил, и вместо вывода pagetitle в заказе вызываю каждый раз свой сниппет, который динамически формирует название товара.
А вообще идея здравая: сделать возможность подменить name у товара в корзине.
Не получилось, сразу в нескольких местах выскочили проблемы, ни сниппет msCart, ни чанки не готовы к такому повороту событий) все равно во многих местах тащится родной pagetitle от товара… я в итоге забил, и вместо вывода pagetitle в заказе вызываю каждый раз свой сниппет, который динамически формирует название товара.
А вообще идея здравая: сделать возможность подменить name у товара в корзине.
На счет вывода названия, сидел думал вспомнил, что везде тянется pagetitel и тоже пришел к выводу что придется шаманить самому. Выводить это одно, но вот еще в заказ должно сохранятся, и тут я уже вроде решение нашел, на событие создания заказа, там писать свой код который переделывает name
В консоли попробовал этот скрипт, думаю вот оно решение. Как сделаю, выложу, может кому надо будет :)
В консоли попробовал этот скрипт, думаю вот оно решение. Как сделаю, выложу, может кому надо будет :)
if ($order = $modx->getObject('msOrder', 6)) {
$products = $order->getMany('Products');
foreach ($products as $product) {
$p = $product->toArray();
$arr[] = $p;
if($p['product_id'] == 19){
$product->set('name', 'TEST');
$product->save();
}
}
}
Написать плагин самая здравая идея. В нём менять name, а в корзине выводить как обычно, ибо даже в стандартном чанке опции джойняться. В документации написано как можно менять значения у товаров в корзине.
@Иван Бочкарев, можете создать(PR) на будущее, чтобы в корзине хранилось название товара, чтобы его можно было видоизменять как угодно и в заказе после оно использовалось.
Пример проблемы:
Товар «Машина 2115», человек добавляет в корзину вместе с опциями, среди них например Цвет «Красный».
В корзине/заказе название товара и опции отдельно отображаются, далее в интернет эквайринг идет только название «Машина 2115», но цвет надо тоже отобразить в чеке, допустим другие опции не надо, но именно цвет надо. Т.е. должно было бы отображаться «Машина 2115, цвет Красный» х 1
Уже для программистов не составит труда, написать условия для изменения названия на основе опций, в плагине на событии msOnAddToCart
Сейчас я сделал после создания заказа приписать опции(пока условия не требуются). Все работает, но это влечет за собой переработку шаблонов корзины, письма.
Пример проблемы:
Товар «Машина 2115», человек добавляет в корзину вместе с опциями, среди них например Цвет «Красный».
В корзине/заказе название товара и опции отдельно отображаются, далее в интернет эквайринг идет только название «Машина 2115», но цвет надо тоже отобразить в чеке, допустим другие опции не надо, но именно цвет надо. Т.е. должно было бы отображаться «Машина 2115, цвет Красный» х 1
Уже для программистов не составит труда, написать условия для изменения названия на основе опций, в плагине на событии msOnAddToCart
Сейчас я сделал после создания заказа приписать опции(пока условия не требуются). Все работает, но это влечет за собой переработку шаблонов корзины, письма.
case 'msOnChangeOrderStatus':
if ($status == 1) {
$orderArray = $order->toArray();
if(strtotime($orderArray['createdon'])+15 > time() ){
$products = $order->getMany('Products');
foreach ($products as $product) {
$p = $product->toArray();
$newName = $p['name'];
if(!empty($p['options'])){
foreach($p['options'] as $option => $value){
$newName .= ', '.$value;
}
}
$product->set('name', $newName);
$product->save();
}
}
}
break;
Если есть такая возможность по времени, было бы круто иметь такую фичу, ну если поддержите данную затею. создать(PR) на будущееПожелание о будущей доработке называется issue
А в чем проблема уже сейчас обзывать товар как угодно в момент его добавления в корзину? Его название после добавления в корзину к товару уже никак не привязано и там может быть написано все что угодно.
Пожелание о будущей доработке называется issueточно, затупил.
Его название после добавления в корзину к товару уже никак не привязано и там может быть написано все что угодно.В сессии хранится тока id опции цена, но названия нет. Получается он дергает товар при выводе корзины.
Или я чего то не знаю.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.