Настраиваемые поля virtuemart 3: Мультивариант/Дочерние товары (часть 6)

Опубликовано: 29 Октябрь, 2016
Обновлено: 2 Ноябрь, 2016
Категория: Настройка VirtueMart
Комментариев: 75

Мультивариант (Multi Variant) - специальный тип настраиваемого поля virtuemart, который позволяет не просто добавлять к товару опции, которые влияют на стоимость, но и создавать сложные зависимости между ними и вести учет остатков товаров с разными наборами опций.

Простой пример. В магазине продается смартфон 3 цветов: белый, черный и розовый.  Для белого и черного есть варианты с 32Gb и 64Gb памяти, а вот розовый доступен только в комплектации с 64Gb.

По сути это один и тот же товар, нужно только настроить, чтобы в карточке пользователь не смог выбрать вариант, которого не предусмотрено или просто нет в наличии.

Используя стандартное настраиваемое поле с типом Строка мы не сможем настроить зависимость между цветом товара и объемом памяти. Кроме настройки зависимостей было бы неплохо вести учет остатков, чтобы автоматически добавлять/убирать разные варианты товара.

Все эти задачи в virtuemart решаются с помощью дочерних товаров и настраиваемого поля Мультивариант.

Дочерние товары - это вариации основного товара, которые чем-то от него отличаются. Например, размером, цветом, шириной и т.д.

На примере со смартфоном разберем, как создаются дочерние товары и зависимости между различными опциями.

Создание дочерних товаров

Дочерние товары можно создать разными путями.

1 вариант

В списке всех товаров выбираем нужный товар и нажимаем кнопку Дочерний товар.

add-child-product

2 вариант

Внутри товара во вкладке Информация через кнопку Добавить дочерний товар.

add-child-product2

3 вариант

При добавлении настраиваемого поля с типом Мультивариант к товару появляется возможность создать дочерний товар в 1 клик и сразу задать для него нужные опции. Это очень удобно, если не нужно изменять названия товара, количество на складе и другие характеристики.

add-child-product3

Но при этом способе создания возникают некоторые проблемы. В частности, если дочерних товаров не создано совсем, то при создании первого может появиться "фантомный" товар scalar.

scalar

C чем связана эта ошибка пока неясно. Возможно, в следующих версиях vm ее устранят, но в vm 3.0.18 такая проблема есть, поэтому лучше предварительно создать хотя бы один дочерний товар 1-м или 2-м способом и только после этого использовать 3-й способ.

При создании дочерних товаров не нужно дублировать всю информацию (описание, изображение и т.д.) из родительского товара. Достаточно указать артикул, остаток и изменить название (если нужно). Цену можно будет задать позднее при добавлении настраиваемого поля Мультивариант.

Для нашей задачи создадим 5 дочерних товаров с одинаковым названием (при желании в название каждого товара можно добавить информацию о цвете и объеме памяти).

После создания дочерних товаров в карточке родительского появится новая вкладка Дочерние товары.

child-product-list

Настраиваемое поле Мультивариант

В менеджере настраиваемых полей создадим новое настраиваемое поле с настройками, как на скриншоте.

2

Все настройки за исключением блока Дополнительные параметры аналогичны другим настраиваемым полям и были рассмотрены в предыдущих статьях по работе с полями.

В блоке Дополнительные параметры полезно активировать опцию  Use canonical link of the parent, чтобы в дочерних товарах в качестве канонической ссылки использовался адрес родительского товара. Опция Show labels отвечает за показ ярлыков (названий параметров).

Далее перейдем в карточку товара и во вкладке Настраиваемые поля добавим поле Цвет и объем памяти.

Загрузится на первый взгляд непонятная конструкция из дочерних товаров и каких-то дополнительных полей.

add-custom-field

Но все не так сложно, как кажется на первый взгляд

Для начала создадим 2 параметра (Цвет и Объем памяти), по которым каждый вариант будет отличаться друг от друга. Для этого в верхней части поля выберем Использовать произвольный ярлык, зададим название Цвет и списком перечислим все доступные цвета. После этого обязательно нужно сохранить товар.

1field

Далее создадим второй параметр Объем памяти. Снова выбираем использовать произвольный ярлык, задаем название и нажимаем кнопку Новое.

2field

В появившемся поле также перечисляем список возможных вариантов и сохраняем товар.

new-field-parametr-2

После этих нехитрых манипуляций все становится на свои места. Теперь для каждого дочернего товара можно выбрать набор доступных параметров.

new-option-product

Телефоны черного и белого цветов имеют варианты с 32Gb и 64Gb, а розовый может комплектоваться только 64Gb.

На сайте это будет выглядеть следующим образом.

product-option1

Товар нельзя купить пока не будет выбран хотя бы один вариант. Так происходит, потому что у родительского товара в настройках не выбраны параметры цвета и объема памяти. Если эти параметры задать, то в родительском товаре также будет доступна кнопка Купить.

Для выбора доступен только Цвет, потому что Объем памяти привязан к нему. Выбираем, например, Белый.

product-option2

После этого можно выбрать 2 варианта памяти.

Если выберем Розовый, то вариант будет только один.

product-option3

Все работает так, как и задумывалось.

Отмечу еще некоторые детали. В рассмотренном примере все варианты имели одинаковую стоимость. Задать стоимость в зависимости от набора параметров можно в отдельной колонке Цена. Величина стоимости задается в абсолютном значении, а не в относительном, как для других настраиваемых полей.

new-field-parametr-3

Чтобы созданные дочерние товары не выводились в модулях и поиске в Virtuemart > Настройки > Внешний вид нужно отключить опцию Показывать дочерние товары без категорий в результатах поиска и модулях.

Дочерние товары и работа с ними, пожалуй, самое трудное для понимания в virtuemart. Надеюсь, что  статья поможет быстро со всем разобраться и использовать на своем сайте.

75 комментариев

    Tobi

    Просто огромнейшее спасибо за эту статью. Как я ее долго ждал 🙂
    Спасибо, все отлично заработало и теперь можно смело подвязывать остатки к внешней базе с автоматическим обновлением через cron.
    Подскажите такой нюанс, при выборе объема, перегружается страница сайта на новый урл, можно сделать как-то без перезагрузки страницы?
    Спасибо!

      admin

      admin

      Рад,что статья оказалась полезной.
      При использовании дочерних товаров они выводятся с уникальным url.
      Можно настроить аякс обновление содержимого (Virtuemart > Настройки > Шаблоны опция Use ajax for product content), но в этом случае могут неправильно работать сторонние плагины, например, zoom изображений.

        Руслан

        А как побороть конфликт с zoom изображений при включенной опции Use ajax for product content подскажите пожалуйста? Для меня это стало камнем преткновения!

          admin

          admin

          К сожалению, пока нет решения.

    Konstantin99

    Как думаете, почему разработчики не дают сразу менять количество дочерних товаров при редактировании родительского ? Приходится заходить в каждый дочерний и править там.

      admin

      admin

      Трудно сказать, возможно, в будущем добавят.

    Назар

    Добрый день! Подскажите пожалуйста, можно ли вывести выбор цвета не списком , а изображениями, чтобы все также работало, но был не выпадающий список , а изображения (как тут http://iphonepiter.ru/shop/apple_iphone_7_128gb_rose_gold )

      admin

      admin

      Здравствуйте!

      Посмотрите в этой статье.

    Роман

    Добрый день.
    Подскажите, что может быть, сделал как в вашей статье, но при выборе варианта (цвет) не происходит смена цены и изначально цена стоит главного товара, а не как в вашей статье, сначала выбор - потом цена.

      admin

      admin

      Здравствуйте!
      Скорее всего, дело в используемом шаблоне.
      Попробуйте для теста сменить на другой шаблон, если заработает, значит нужно будет искать проблему в шаблоне.

        Роман

        Странно, шаблон 2016 года, сразу с интегрированным virtuemart 3. Самое интересное что доп.поля, когда идет формула + к цене работает.

          admin

          admin

          Вы пробовали сменить на стандартный шаблон. В нем проблема сохраняется?

            Роман

            Поменял, все заработало :((((((( Надо искать спеца... который сможет исправить...

    Роман

    в стандартном шаблоне ссылка меняется на
    computer/handbags/плита-днища-2-detail.html
    в моем
    /computer/handbags/150

    может даже и не в шаблоне дело, может что то с настройками шаблона.

      admin

      admin

      Если шаблон платный, то попробуйте обратиться к разработчику.

    Алексей

    После перехода на vm 3.0.18 появились и фантомные товары и такая же проблема как и у Романа. До этого пол года все работало.

      admin

      admin

      Очистите кеш.
      Попробуйте сменить шаблон на стандартный, если все будет работать правильно, то дело в шаблоне.

    7Hogik

    Спасибо все работает. Правда выбор характерестик добавился в "Недавно проссмотренные". Как их убрать оттуда?. Шаблон "Airshop"

    Яна

    У меня почему-то не работает кнопка + новое
    Пробовала в разных браузерах, нажимаю на нее, ничего не происходит.

      admin

      admin

      Пришлите ссылку на страницу с проблемой.

        Яна

        Так это в админке же.

          admin

          admin

          В статье описано 3 варианта создания дочерних товаров, ни один из вариантов не работает?

    Яна

    Не работает добавление "Новое нежелательное последствие". Кнопка "добавить" не реагирует.

      admin

      admin

      В Система > Общие настройки > Сервер для опции Сообщения об ошибках выберите Максимум
      Возможно, это поможет понять в чем проблема.
      Если не поможет, то нужно обновлять joomla и virtuemart до последних версий.

    Денис

    Добрый вечер.
    Подскажите пожалуйста, как можно правильно реализовать выбор товара.
    Joomla! 3.4.8
    VirtueMart 3.0.12
    Стоит задача в заказе сделать "онлайн калькулятор" (заказчик при выборе определенных опций в результате получает продукт с выбранными им в процессе заказа свойствами). Для примера как это выглядит https://zakaz.wolf.ua/ru/calc/vizitki/
    В начале выбирается "Продукт", потом "Количество сторон" печати, потом "Материал" на котором будет производится печать, "Покрытие" которым будет покрываться готовое изделие, "Срок изготовления" и только после этого ему остается сделать последний выбор - "Количество" (и сразу наглядно показана цена).
    Конечно при помощи правки мультиварианта и настраиваемых полей это можно постараться сделать, но в таком случае мы получим 4*2*6*5*3*8=5760 дочерних товаров (чуть меньше, так как некоторых вариантов комбинаций параметров не предусмотрено). Но даже и половины от этого будет слишком много (у меня при добавлении 43 дочерних товаров с 3 параметрами просто данные не сохраняются - сбрасываться все что было заполнено ранее). Да и самих товаров должно быть не менее сотни в магазине, что умноженное на дочерние товары создаст большой объем.
    Собственно вопрос - есть вариант как то упростить это? Возможен вариант продажи фиксированного количество готового изделия? Установить что товар может продаваться только по 500шт, 1000шт, 2000шт,......
    Спасибо!!

      admin

      admin

      Здравствуйте!
      Из готового посмотрите эти расширения
      https://breakdesigns.net/extensions/vm-product-builder
      http://sm-planet.net/index.php?option=com_content&view=article&id=2:catproduct&catid=8&Itemid=110

    Денис

    Большое спасибо!!!
    Но немного не то. Все эти расширения в корзину кладут несколько товаров, а мне необходимо что бы товар был один, но с несколькими опциями. Опции должны быть настраиваемыми как в мультиварианте ("В магазине продается смартфон 3 цветов: белый, черный и розовый. Для белого и черного есть варианты с 32Gb и 64Gb памяти, а вот розовый доступен только в комплектации с 64Gb"), но без дочерних товаров (или с ними, но маленьким количеством).

      admin

      admin

      Нужно заказывать расширение на фриланс, что-то готовое вряд ли есть.

    Наталья

    Здравствуйте, можно ли вывести дочерние товары в виде таблицы

      admin

      admin

      Здравствуйте!
      Из готовых решений встречал только catproduct.

    Алексей

    Помогите пожалуйста.
    Делал все как описано в статье мультивариант/ Дочерние товары. Но при выборе опции товара например белый телефон ничего не происходит. Пробывала на разных шаблонах на всех вылетает ошибка _____ Uncaught TypeError: ((n.event.special[g.origType] || (intermediate value)).handle || g.handler).apply is not a function _______.
    Подскажите как это исправить, что бы все работало как описано в статье.

      admin

      admin

      Пришлите ссылку на товар, в котором возникает эта проблема.
      Так же в Система > Общие настройки > Сервер для опции Сообщения об ошибках выберите Максимум, возможно это поможет понять где ошибка.

        Алексей

        Вот ссылка http://11.vh81513.eurodir.ru/ru/sredstva-zashchity-rastenij/gerbitsidy.html
        "Система > Общие настройки > Сервер для опции Сообщения об ошибках выберите Максимум" ставил ошибки не вылетают.
        самое интересное что товар работает как-то через раз. В браузере вылетает ошибка на jquery.min.js:3 . Содержание ошибки ----- Uncaught TypeError: ((n.event.special[g.origType] || (intermediate value)).handle || g.handler).apply is not a function. Уже по новому ставил Joomla. со стандартными шаблонами, не каких дополнений не устанавливал кроме Vertumart. Что бы не делал всегда остается эта ошибка.
        Подскажите как исправить и в чем проблема??

          admin

          admin

          Эта тема обсуждалась на оф.форуме и конкретного решения пока нет. Думаю, что в новых версиях эту проблему решат, а пока можно в Virtuemart > Настройки > Шаблоны отключить опцию Использовать ajax для отображения товаров

        lexa8619

        Нашел ошибку
        Notice: Undefined property: vmrouterHelper::$itemId in /var/www/vh81513/data/www/11.vh81513.eurodir.ru/components/com_virtuemart/router.php on line 116
        Подскажите как от нее избавиться.

          admin

          admin

          Попробуйте обновить vm до последней версии.

    Алексей

    Помогите!! Создаю товары к примеру "Товар1" "Товар2" "Товар3" к каждому из них добавляю дочерние товары, через мультивариант прикрепляю к дочерним товарам одинаковыми опциями к примеру 64гб 32гб 8гб.
    Когда захожу в "Товар1" и выбираю опцию 64гб или 32гб или 8гб меня начинает перекидывать на товары "Товар2" или"Товар3" с выбранной опцией.
    И все такие неадекватные перебрасывания происходят в любом товаре.
    Подскажите как решить эту проблему.....
    вот страница товаров http://44.vh81513.eurodir.ru/kupit-sredstva-zashchity-rastenij.html
    Товары. очки..., ноутбук..., наушники..
    Подскажите как решить эту проблему.....

      admin

      admin

      Проблемы наблюдаются не во всех товарах, например, здесь все правильно работает. Пришлите доступ к админке и ссылку на вопрос на admin@virtuemart.su, разберемся.

        Алексей

        Отправил доступ от админки, буду благодарен за помощь

    Алексей

    Столкнулся с проблемой. Когда кол-во дочерних товаров меньше 250 все прекрасно работает. Как только кол-во становится больше 250 выпадающие списки передстабст работать. Подскажите где копать? http://savepic.ru/12835516.jpg

      admin

      admin

      Точного решения не подскажу, никогда не сталкивался с таким количеством дочерних товаров. Единственное, что приходит в голову это либо как-то разбить основной товар на несколько, например, по длине и внутри каждого выводить дочерние, либо совсем отказаться от дочерних и просто выводить опции.

    Антон

    Здравствуйте. Подскажите пожалуйста как мне сделать выбор тары более информативно, в виде картинок? Вот ссылка на товар (мультивариант) http://expertkrasok.com.ua/katalog-tovarov/inter-yernye-kraski-laki/vannaya/%D0%BF%D1%80%D0%BE%D0%B1%D0%BD%D1%8B%D0%B9-%D0%BA%D1%80%D0%B0%D1%81%D0%BA%D0%B0-detail
    а вот ссылка как хотелось бы сделать http://kompozit.ua/kraska-inter-ernaja-interior-5.html
    Заранее Вам благодарен!

      admin

      admin

      Здравствуйте!
      Готовых решений не встречал, нужно заказывать на фрилансе.
      Задача интересная , если есть желание напишите на admin@virtuemart.su попробую помочь.

    n73vi

    nikitinvi

    Здравствуйте. Подскажите, пожалуйста, с помощью стандартных наборов virtuemart можно настроить продажу. Например главный товар:

    Спальный гарнитур стоит 30000 руб.

    А под ним чтобы можно выбрать гарнитур по модулям.

    Кровать 6000 руб
    Шкаф 10 000 руб
    Комод 3000 руб
    Туалетный столик 2000 руб. и т. д.

      admin

      admin

      Здравствуйте!

      Посмотрите в сторону этого плагина.

        n73vi

        nikitinvi

        Спасибо. Я читал ваш обзор про этот плагин. Может быть даже его куплю, но хотелось бы узнать, если стандартные решения этой задачи с помощью virtuemart.

          admin

          admin

          C помощью стандартных средств можно вывести только похожие товары, в карточке основного.

            n73vi

            nikitinvi

            "Похожие товары" и "Сопутствующие товары" это разные опции?

    Good-year

    Подскажите почему у меня на шаблоне LIkeShop если поставить по этой инструкции дочерний товар пропадает кнопка с выбором количества и кнопка купить.
    http://www.picshare.ru/view/7935272/

      admin

      admin

      Это не зависит от шаблона. Пришлите настройки поля, прикрепленного к товару. Скорее всего, не активирована опция Заказываемый родитель.

    Good-year

    Не нашел где включается эта опция.
    "Это Настройки поля"? http://www.picshare.ru/view/7936121/

      admin

      admin

      Пришлите доступ к админке и ссылку на вопрос на admin@virtuemart.su, разберемся.

    bcons

    Добрый день

    Столкнулся с проблемой.
    Создан каталог товаров. Дочерние товары создаются как multivariant.
    Все нормально. Все работает. Во фронте появляется выпадающий список характеристик. Но иногда не пойму по какой-то логике появляется товар, у которого в выпадающем списке помимо дочерних товаров, появляется товар родитель без характеристики. Естественно на нем ни остатков нет, ни в корзину его ложить смысла нет.
    Смотрел в админке. Ну одинаково заведены два товара. У одного нет головного товара в списке у другого есть. В чем может быть проблема?

    товар с головным в списке (проблема): https://store.letsvape.ru/index.php/store-frontpage/obsluzhivaemye-atomajzery/94-kliromayzery/2372-kliromayzer-smoktech-tfv8-big-baby-5-ml-detail

    товар только с дочерними (все нормально): https://store.letsvape.ru/index.php/store-frontpage/obsluzhivaemye-atomajzery/94-kliromayzery/669-kliromayzer-smoktech-tfv8-6ml-stal-noy-detail

      admin

      admin

      Нужно смотреть на настройки полей для каждого товара, так трудно сказать в чем проблема.
      Пришлите скрины.

    Vladislav

    Vladislav

    Статья вообще вышка) очень помогла реализовать в шаблоне likeshop то что нужно ))

      admin

      admin

      Отлично)

    Olga

    Здравствуйте. Подскажите, пожалуйста.
    - А возможно не создавать новые дочерние товары, а выбрать из существующих?
    - И как правильно оформить файл импорта в компоненте csvi pro, чтобы товары загрузились как дочерние?

      admin

      admin

      Здравствуйте!

      Сделать существующий товар дочерним можно в настройках во вкладке Информация в поле ID родительского товара. Просто укажите id товара, который должен быть родительским.
      Точно не подскажу, но наверняка в csvi можно задать столбец в параметрами id родительского товара. Для родительских указывайте - 0.

        Olga

        Спасибо большое.
        Настроить удалось, появилась ошибка.
        Есть родительский товар http://mirbild.tmweb.ru/shop/bilyardnye-stoly/liverpul-massiv-yasenya-12-futov-slanets-orero-45-mm-1-detail
        Два поля - 10 футов и 12 футов.
        Если выбирается любой товар из поля "12 футов", то в поле "10 футов" выпадает список с 2мя товарами.
        Если выбрать товар из поля "10 футов", то в поле "12 футов" ничего выбрать нельзя.

        В чем может быть ошибка и как исправить?

          admin

          admin

          Пришлите скрин настроек дочерних товаров из админки, без этого трудно что-то конкретное сказать.

            Olga

            https://yadi.sk/i/qaZcWYSb3GCDBY

            admin

            admin

            Нужно еще посмотреть на настройки, которые находятся ниже.

            Olga

            Какие ниже именно?
            В разделе "Настраиваемые поля" ниже ничего нет, только то, что на скрине.

            admin

            admin

            Судя по всему проблема в настройках, но для точного ответа нужно смотреть на сайт.
            Пришлите доступ к админке и ссылку на вопрос на admin@virtuemart.su, попробую помочь.

    Павел

    Здравствуйте, не подскажите как добавить к этим полям собственные стили? У меня все эти выпадающие списки выводятся очень криво, а если править уже присвоенные им стиле в файле chosen.css, то одновременно меняются и все остальные списки, в том числе и в админке.

      admin

      admin

      Здравствуйте!
      Можно попробовать отключить опцию Использовать jQuery для выпадающих списков на сайте в Virtuemart > Настройки > Шаблоны
      После этого выпадающие списки должны иметь стандартный вид.

        Павел

        Спасибо, все заработало как надо

          admin

          admin

          Отлично.

    Ростислав

    Добрый вечер, всё по инструкции, но цена при изменении параметров не меняется. Пробовал со стандартным шаблоном - тоже самое. Подскажите пожалуйста в чем может быть причина?

      admin

      admin

      Либо в Virtuemart > Настройки > Шаблоны не активирована опция Использовать скрипты для товаров, либо скрипты vm конфликтуют с другими скриптами на сайте.
      Пришлите ссылку на товар с проблемой.

        Ростислав

        Галочка стоит.
        Ссылка на товар:
        http://hrumroom.net/index.php/koshki/suh-d-sobak-velkih-porod-kurica-detail

          admin

          admin

          Что-то не так с настройками. Пришлите скрин настроек из карточки товара.

            Ростислав

            Скинул все, на всякий случай
            https://yadi.sk/i/N0zyExi73GS4T6
            https://yadi.sk/i/yI6Ki11-3GS5Y5
            https://yadi.sk/i/g3DnFvVJ3GS4fE
            https://yadi.sk/i/LGKe20El3GS4Gj

            admin

            admin

            Попробуйте вместо веса выбрать произвольный ярлык. Если не поможет, то пришлите доступ к админке и ссылку на вопрос, постараюсь помочь.

    Ростислав

    Поменял на "произвольный ярлык" - не помогло.
    Отправил доступы на почту, заранее спасибо!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
Для вставки кода заключите его в теги [php] [/php]
*