Сегодня мы затронем одну из самых сложных и интересных возможностей Virtuemart 2 – составные товары. Что это такое? Простейшим примером может быть кухонный гарнитур или футболка, имеющая разные размеры и цвета. Такие товары состоят из нескольких позиций, причем важно контролировать остатки каждой их них. В этой статье я расскажу о том, как добавить товару дополнительные опции, которые имеют дополнительную стоимость и контролируемые остатки.
Содержание
Для большего понимания опишу два вида представления товаров, которые могут использоваться в Virtuemart 2.
Задача: продавать футболку одного типа, но разных размеров и цветов. Разные размеры и цвета имеют разную стоимость. При этом остатки на складе всех видов футболки должны контролироваться.
Решение 1: Создать несколько товаров. Например: футболка зеленая M, футболка зеленая L, футболка зеленая XL, футболка красная M, футболка красная L, футболка красная XL, и т.д.
Решение 2: Создать один товар, в котором добавить опции, позволяющие выбирать размер и цвет.
Очевидно, решение 2 удобнее как для продавца, так и для покупателей. Реализация также вполне понятна: создаем два дополнительных поля «Размер» и «Цвет», являющихся атрибутами корзины и добавляем их для товара. Этот способ отлично работает, но только в том случае, когда не требуется контроль остатков. Если же он все-таки нужен, то этот метод не подходит.
Очевидно, чтобы контролировать остатки по каждой позиции, необходимо завести соответствующие товары в магазине. Т.е. приходим к решению 1. Правда есть возможность упростить восприятие товара для покупателей. Т.е., хотя товаров и много, покупатель будет видеть всего одну футболку, но с выбором подходящих опций. Здесь мы приходим к термину «Дочерние товары». Родительским товаром в нашем примере будет футболка. А дочерними – «зеленая M», «зеленая L», «зеленая XL», «красная M», «красная L», «красная XL», и т.д. Для дочерних товаров можно установить собственные цены и остатки. Остается главный вопрос: как настроить все это в Virtuemart 2? Для подобных ситуаций предназначено дополнительное поле типа «Stockable Variants Plugin».
Stockable Variants Plugin. Использование
Прежде всего, необходимо создать дополнительное поле нужного типа. Переходим в дополнительные поля Virtuemart 2 и добавляем новое поле. В типе поля выбираем «Плагины». В появившимся списке плагинов выбираем «Stockable Variants». Для примера создадим опцию «Size» и добавим три варианта размеров: Small, Medium и Large. Каждый размер указываем с новой строки, как на рисунке:
Дополнительно установим опцию, «Атрибут корзины» в «Да». Сохраняем.
Всё. Поле создано.
Дочерние товары
Теперь пришло время создать дочерние товары под данные опции. Для этого перейдем в список товаров Virtuemart, отметим галочкой нашу футболку (предполагается, что обычный товар «футболка» уже создан) и нажмем кнопку «Дочерний товар». После нажатия кнопки откроется форма добавления дочернего товара. Большинство из доступных полей можно не заполнять, но следует задать название товара «Футболка размера Small», артикул и остаток на складе. Цену можно не указывать, т.к. такая возможность еще будет доступна позднее. После этого сохраняем наш дочерний товар.
Вернувшись к списку товаров Virtuemart 2, вы можете увидеть 1 дочерний товар в колонке «Дочерние товары». Теперь вы можете кликнуть по нему и увидеть список дочерних товаров.
По аналогичному принципу добавляем к нашей футболке еще два дочерних товара – размеры Medium и Large.
Добавление дочерних товаров к родительскому через дополнительное поле
После того, как три дочерних товара созданы, пришло время вернуться к родительскому товару. Открываем его снова и переходим к вкладке дополнительных полей. Добавляем созданное нами поле и видим список всех дочерних товаров.
Остается только задать для них опции размера и цену каждой из опций. Обратите внимание, что указанная здесь цена не будет окончательной ценой данного товара, она добавится к основной цене родительского товара. Т.е. к примеру, если родительский товар стоит 100 руб. и для дочерних вы указываете 10, 20 и 30 руб. соответственно, то при выборе покупателем опций он получит цену в 110, 120 и 130 руб.
Под основным блоком с дочерними товарами вы можете увидеть форму добавления дочерних товаров. Использовать ее не рекомендуется, т.к. до ума она все еще не доведена.
Сделав шаги, описанные выше, вы получите товар «Футболка» с возможностью выбора размера и контролем остатков футболок каждого размера на складе.
Мультиопции
А теперь немного усложним. Что если у нас есть зависимые опции? Скажем, пять размеров и три цвета футболки. Всего получается 15 разных видов футболки. Показывать покупателю выпадающий список из 15 различных позиций нехорошо, согласитесь. Совсем другое дело, если будет показано два списка «Размер» и «Цвет». В первом будет 5 размеров, во втором 3 цвета. Это гораздо удобнее. Как этого добиться?
При создании нашего поля мы добавили только одну опцию из возможных трех. Теперь отредактируем поле и добавим еще одну – цвет. Получится, как показано на рисунке:
Теперь необходимо создать дочерний товар на каждую комбинацию опций. Т.е. всего получится 15 дочерних товаров.
После того, как дочерние товары созданы, переходим в родительский и видим, что теперь есть возможность выбрать комбинацию опций для каждого дочернего товара:
Для пользователей же все это безобразие будет представлено в виде двух удобных выпадающих списков.
Прелесть такого подхода в том, что выпадающие списки обладают зависимостью друг от друга. Например, если кончились красные футболки размера XL, то после выбора красного цвета из выпадающего списка размеров XL исчезнет, не позволяя заказать покупателю футболку, которой нет.
Вот так работает плагин Stockable Variants. Функционал хоть и сложный, но достаточно интересный. Правда, несмотря на все достоинства данного плагина, должен заметить, что в некоторых случаях более оправданным будет применение варианта 1.
и все равно в данном плагине цена "плюсуется" к основной?
У меня возникла одна проблема. Делаю размеры для одежды, на каждый размер свой дочерний товар. В родительском товаре добавляю с помощью настраиваемого поля stockable variants дочерние товары. В карточке родительского товара появляется выпадающий список, выбираю нужный размер (если при для дочки была изменена цена, то изменяется цифра). Нажимаю кнопку "В корзину" (кстати, их выведено две), и вместо сообщения, что товар положен в корзину появляется сообщение, что товар есть в наличии. Подскажите плиз, как поправить добавление товара в корзину?
Посмотреть можно тут:
http://miabella.ru/index.php/swimwear/kupalnik-scarlett-detail
Буду очень признательна за комментарии, Ольга
Новые файлы взяла из другого сайта ИМ.
Спасибо, очень хорошая статья, как и все остальные на Вашем сайте.
Сейчас занимаюсь добавлением моделей обуви на новый сайт и очень интересует один главный вопрос:
Возможно ли как то через phpmyadmin или другим способом добавить во все модели необходимые дочерние товары(размеры с 35 по 41) или может быть есть способ перенести данные размеры(свойства товара) из vurtuemart 1.1.9 в virtuemart 2.0.12?
Заранее благодарен за совет!!!
Не могли бы вы сделать статью о массовом импорте/экспорте дочерних товаров в VM2 при помощи CSVI с последующей подвязкой к плагину Stockable Variants Plugin.
При создании магазина женского белья я перенес в него товары (парсингом) с сайта поставщика. Поставщик прислал файл где для каждого товара есть дочка характеризующаяся размер/цвет, цена, остаток. И как подвязать этот файл к магазину через csvi для меня стало очень большой проблемой, ввиду отсутствия руководств на эту тему (импорт дочерних товаров через CSVI в VM2) ни на русском ни на английском. Для VM1 на сайте CSVI было руководство на английском языке для импорта дочерних товаров (где все понятно), а для VM2 руководстово по работе с настраиваимы полями (там многое непонятно).
Сделал все как здесь описано и вроде все нормльно, выводится список, выбраный товар попадает в корзину, но при смене выбора не меняется описание на соответствующее доченрнему товару, как это было в VM 1.
Так и должно быть или может это только проблема моего шаблона?
Уже решил, в моем случае надо использовать поле "Общий дочерний вид".
Работает как надо, я бы сказал, что реализовано даже лучше и удобней чем в VM 1.
Здравствуйте. Скажите, а фотография товара меняется при выборе дочернего товара?
Автору спасибо за статьи, очень помогают разбираться с Виртуемартом.
Столкнулся со следующей проблемой. Если у вас есть товар А, а к нему 2 дочерних товара А1 и А2. Количество в наличии для каждого дочернего товара указано по 1.
Так вот проблема в том, что дочерние товары добавляются в корзину столько раз, сколько вы нажмете на кнопку...
Есть ли какое-то решение проблемы или снова ждать очередного обновления?
У вас подобная ошибка не возникает?
Но есть решение, не совсем корректное, но работает: http://www.rupostel.com/phpBB3/viewtopic.php?f=5&t=937&sid=1b5d2e395866210264df3bf3f077ebbc
При этом у основного товара должен быть остаток = 0.
Подскажите, а обязательно ли в случае с плагином создавать дочерние товары для каждого сочетания свойств? Нельзя ли как в варианте с дополнительными полями просто добавить эти поля. Заинтересовался плагином как раз из-за различного сочетаний свойств и невозможности получения определенных комбинаций свойств. Контроль товаров для меня не критичен.
Если товары вводились до того, как появилась надобность сделать часть из них дочерними, то есть ли средства в панели управления, чтобы введенный товар сделать дочерним другого товара? Или только через Phpmyadmin? VM 2.0.18a
2.0.20b - не так все
Если продаётся 1 шт "Размера 1", то запас по нему уменьшается до 0.
А запас родительского товара при этом остаётся неизменным (2 шт), а должен тоже уменьшиться и стать 1 шт, ведь один размер уже продан.
Как это реализовать?
Действительно интересный вопрос, у меня та же проблема, пока решения не нашла. Если у вас что-то найдется, сообщите плиз.
- хак ядра;
- просто прибавлять столько, сколько будет при умножении.
- К сожалению не настолько в этом разбираюсь, чтобы сделать хак ядра, если бы кто ниб хотя бы направил что и как..
- прибавлять сколько нужно меня не выручит к сожалению.. Дело в том, что хочу организовать продажу алюминиевых радиаторов. У них идет отличие в межосевом расстоянии и количестве секций.
Поэтому хотел поставить зависимость количества секций через умножение: 2 секц - *2, 3секц - *3 и тд ,а зависимость между осевым расстоянием простым сложением: 350мм -0, 500мм - +10. Можно конечно сделать через плагин stockable variants и дочерних товаров, но делать 32 дочернего товара - не вариант ,да еще и глюк идет какой то при добавлении товара в корзину, почему то плюсуется лишняя сумма к стоимости товара.. короче в раздумьях, знаний не хватает...
добавляем товар, оформляем заказ и выходит такая ошибка
Fatal error: Cannot use string offset as an array in /home/bewoman/bewoman-shop.ru/docs/plugins/vmcusto m/stockable/stockable.php on line 438
заказ не оформляется
может что не так поняли??? помогите пожалуйста!
в файле administrator\components\com_virtuemart\helpers\html.php
в строчке public static function input($name,$value,$class='class="inputbox"',$readonly='',$size='37',$maxlength='255',$more=''){
Поле увеличилось, но при сохранении обрезается текст, такое ощущение, что где то еще ограничение, не подскажите в каком файле, все облазил уже...
Заранее извиняюсь за ссылку и за вопрос.
Простите, еще вопрос. Вот тут http://alanart.spb.ru/catalog.html на сайте есть каталог (джумла 1.5).Интернет-магазин тоже есть.Надо создать такой же каталог на J 2.5 Не посоветуете, какой компонент для этого подходит? Может, сможете по внешнему виду "узнать" старый компонент для 1.5? По названию определить не могу, компонент каталога называется, как и сайт "дизайн студия алан" Я уже голову сломал.
Joomla 2.5 + VM 2.0.22a
А что с остатками? Сделал 16 дочерних товаров (4 цвета и 4 размера), поставил наличие по нескольким. Тем не менее, даёт выбирать всё подряд. Контроль остатков включён. Кстати, пришлось поставить наличие виртуальному родительскому товару.
Что не так?
Joomla! 2.5.14
VM 2.0.22c
Разбираюсь с этой замечательной функцией которую давно хотел, но руки не доходили.
Вроде все сделал по инструкции, но что-то не то.
Самостоятельный товар A800 работает замечательно, а вот родитель A660 имеет две дочки, но не сам родитель, не дочки не кладутся в корзину. Да и не понятно почему дочки отображаются, ведь их наверно не должно быть видно как самостоятельные товар в категории? Хотя возможно их нужно просто из категории удалить, но товар все-равно в корзинку не лезет.
Если конечно мой английский меня не подвел.
В моем случае он не решает задачи на 100%. Но мне с моим английским похоже не найти взаимопонимания. Не уверен что правильно задаю вопрос и не уверен что правильно понимаю то что мне пишут
http://forum.virtuemart.net/index.php?topic=118931.0
Вот сайт на котором пытаюсь это получить
http://saltaim.ru/index.php/smartphones
Буду разбираться в том что там написано, может поможет. Но то что я вижу в первом посте не то что я бы хотел получить в результате. Кое-какие мысли у меня уже появились, но второй вопрос: Как сделать так чтобы "дети" не отображались в категории я еще не нашел, а без него никак. Пока они видны все это не имеет смысл. Хочется чего-то подобного:
http://www.mountaingear.com/webstore/Clothing/Jackets/Marmot/PreCip-Jacket-Women-s/_/R-227127.htm
В данном случае, как мне кажется, "родитель" не является носителем цвета, а все цвета это цвета "дочек".
В категории в которой живет родитель есть его дети. Хочется дети не отображались, но убрать их из категории не могу, т.к. планируется привязка базы к 1С и все товары одной категории и должны быть в этой категории.
Только столкнулся с таким глюком.
Действующие лица)))
Товар - пальто (родитель)
Дочерние товары - Варианты, отличающиеся размером и цветом (2 опции)
Ядро - VM 2.0.24
Шаблон GK StoreBox.
Суть:
Сделал все по инструкции - заработало, счастью нет предела))), только появились кнопки + и -, коих раньше не было, но так даже лучше. Неприятно другое: все работает, если не авторизоваться. У авторизовавшихся пользователей список размеров норм, а список цветов пуст, кнопки + и - исчезают. В корзину добавляет товар с первым цветом в опциях. Товар заказной т.е. остаток 0, опции на цену не влияют. Подобная реализация необходима в связи с особенностями поставок товара.
Если можете помочь - плз. Уже мозги сломал.
P.S. Дочерним товарам группа не присвоена.
Магазин специй, товар для покупки выбирается по весу упаковки: 100г, 150г...
Что использовать: свойство или дочерние товары?
Учет количества не нужен (указывается только для главного товара), вроде бы можно использовать свойство товара, НО тогда не получится автоматически рассчитать стоимость доставки (+ раздражающий вывод списка свойств, когда показывается прибавленная стоимость).
Если делать дочерние товары - то необходимо для каждого дочернего товара заполнять много лишней информации.
Как лучше поступить?
К стати, если не используешь систему расчета налогов и для доставки используется только один способ, то можно использовать ее для этих целей, исходя из стоимости. Конечно, придется посидеть с калькулятором и поправить файлы локализации, но это вариант, сам эту систему не по назначению использую, удобно)))
А по поводу прибавки к стоимости, это легко решается правкой кода, а точнее удалением кода, отвечающего за вывод этих данных.
В файле com_virtuemart\productdetails\tmpl\default_addtocart.php подредактировал вывод настраиваемых полей с вида радиокнопок на выпадающий список таким образом:
заменил
на
В результате выбранное значение настраиваемого поля перестало попадать в корзину. Где искать причину затора?
нужна помощь, делаю инет магазин, на вм 2,026д, и поставлена задача, чтобы выбор товара выглядел приблизительно так!
http://www.florist.ru/bouquet-600203.html
это реально сделать?
остаток товара не имеет значения!
Спасибо!
Хороший сайт! Подписался!
Добрый день, спасибо то, что нужно.
Подскажите как можно вывести кнопку купить на страницу категории? И как вообще правильно изменять вывод товара на странице категории?
на:
и вставить в макет категории.
Подскажите как решить проблему?
Вот как заведен был товар:
http://ellie.kz/index.php/ru/front-page/malysh-0-24-mesyatsa/10-5-13-sm-pinetki-227-2014-03-24-229-230-2014-03-24-233-234-detail
И как завел его при помощи статьи:
http://ellie.kz/index.php/ru/front-page/malysh-0-24-mesyatsa/10-5-13-sm-pinetki-227-2014-03-24-229-2014-04-28-337-338-339-340-detail
Огромное спасибо за статью)))
5+++
Может с заподанием написал, но как решить всё-таки? При выборе этих выпадающих списков меняется цена, но не изображение. Как сделать, чтоб при этом вместо родительского изображения появлялось изображение дочернего товара?
Завел футболки:
http://ellie.kz/index.php/ru/malysh-0-24-mesyatsa/kostyumy-rubashki-futbolki/9mes-5-let-80-120sm-kostyum-i-love-mama-papa-detail
каждой модели по 1 шт, пришел заказ с разницей в 10 минут, на одну модель, одного размера(MAMA 116см), и заказ оформился- без проблем. Причем в дочернем товара(ту модель которую заказали):
в наличии-1
заказано-2.
В родительском:
в наличие -10
заказано-0.
И доступность в выпадающем списке остается. Куда смотреть, чтобы понять, почему не ведется учет и почему не проверяется наличие вещей на складе?
Спасибо.
Создал товар, к нему сделал 2 дочерних товара, все строго по статье. Добавил поле Размер. На сайте поле не появилось. Все снес, сделал в точности (по буквенно) как в статье - выводится один родительский товар :(.
Похоже, что в новой версии VM плагин или не работает, или работает не так.
Разобрался сам. Не обратил внимания на чек-боксы Parent Variant - они должны быть включены конечно-же!
Второй вариант:поставить галку: Товары, которых нет в наличии, могут заказываться. Никаких специальных действий.
К сожалению ни тот ни тот вариант не идеальный. ПРосто будем счастливы если кто-то подскажет как решить эту проблемму.
Она кроется в том что если товар родитель"отсутствует на складе" - не дает заказать дочерние товары
В virtuemart 2.6.12.2 (о других версиях судить не могу), проблема описана в 2х последних комментариях ну очень мешает дышать и жить. Если в опциях указать что при отсутствии товара на складе менять кнопку купить, или в корзину на "уведомить меня", а количество родительского товара = 0 кнопка купить отображается, но при попытке нажатии - пишет что товара нет в наличии. При положительном количестве родительского товара на складе - заказ оформляется, но это сбивает с толку при формировании остатков товара, подсчетах и так далее. Если Вас не затруднит подскажите решение.
Я постараюсь решить эту проблему, скорее всего придется обращаться за помощью так как не силен в коде... Когда найду решение - обязательно выложу. Плагин конечно своеобразный, но настолько заморочистый настолько и интересный. Я очень надеюсь что в Virtuemart 3 его допилили.
Спасибо за статью. Очень полезный материал и доступное изложение.
В принципе, боль мень описание нашел на буржуйском сайте, если пропустят ссылку, я не помню точно что, но что-то я и здесь нашел полезного https://www.flexiblewebdesign.com/forum-virtuemart-2-template-puremart-support/152-tutorial-custom-field-with-stockable-variants
когда, выбрав плагин, я заношу название и список опций, то после сохранения они пропадают. Все остальное есть, а эти поля девственно чисты получаются. Причем не важно на каком языке пишешь эти переменные. Куда смотреть не подскажите? Может я где-то что-то упустил?
Заранее спасибо за любой ответ )
Через Фаербаг -В ответе сервера 304 и видно в строчке фото дочернего товара которое надо выводить в основное фото.
Что нужно добавить в настройках?