Вывод дочерних товаров в карточке товара virtuemart

Опубликовано: 1 октября, 2018
Обновлено: 5 февраля, 2023
Категория: Настройка VirtueMart

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

Но что если нужно выводить дочерние товары автоматически, не прикрепляя никаких полей, по аналогии с похожими товарами?

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

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

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

Скачать шаблон

Скачанный файл нужно скопировать в папку /components/com_virtuemart/sublayouts/.

Для настройки внешнего вида можно использовать свои стили, для примера я использовал такой css.

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

В шаблоне childproduct.php кроме изображения и названия также добавлен вывод цены и кнопки Купить.

С помощь этого шаблона можно вывести все дочерние в виде отдельной таблицы, достаточно немного поправить верстку.

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

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

    vskuchmak

    покажете на живом сайте?

      admin

      admin

      Демо нет, все тестировалось на локальном сервере. Если при работе возникнут какие-то проблемы, то пишите, разберемся.

    vskuchmak

    например у меня кнопка Купить под каждым дочерним товаром
    https://kindercomfort.ru/avtokresla/avtokresla-gruppa-1-9-18kg/avtokreslo-britax-roemer-king-ii-detail
    у вас при выборе цвета подразумевается полная перезагрузка страницы? не так сделано https://beru.ru/product/100210224057 ?

      admin

      admin

      Для скрытия цены и кнопки Купить удалите из шаблона

      Контент обновляется с перезагрузкой страницы.
      Если нужно дополнительно выделять выбранный товар, то добавить это можно, напишите на admin@virtuemart.su

    spro1

    Добрый день!

    Спасибо за статью, на последней версии VM работает отлично, сделал за пару минут.

    У меня задача сделать карточку товара, как тут https://myscent.ru/brands/kenzo/men/l_eau_par_kenzo_pour_homme/
    Получается есть товар с характеристиками, в карточке выводятся дочерние товары со своей ценой и контролем остатков.

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

    Это возможно?

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

      admin

      admin

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

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

      Чтобы скрыть цену у родительского товара в файле /components/com_virtuemart/sublayouts/prices.php после

      добавьте

      и в конце файла добавьте

      После правок нужно переопределить файл в папке /templates/t3_bs3_blank/html/com_virtuemart/sublayouts/, чтобы все изменения сохранились при обновлении.

      Чтобы скрыть кнопку Купить у родительского товара в файле /components/com_virtuemart/sublayouts/addtocart.php после

      добавьте

      и в конце файла добавьте

      После правок нужно переопределить файл в папке /templates/t3_bs3_blank/html/com_virtuemart/sublayouts/.

    vladimirwk

    Как можно вывести краткое описание и настраиваемые поля?

      admin

      admin

      Для вывода краткого описания используйте этот код

      Настраиваемые поля можно вывести с помощью кода из этой статьи. Если не получится, то уточните какая позиция вывода у полей, которые нужно вывести.

        vladimirwk

        Краткое описание и общий заголовок вывел. Настраиваемое поле не выводится. Вывожу в своей позиции под названием "magazin", вывод осуществляю по той статье на которую вы дали ссылку, в карточке товара и в модуле выводится нормально, а в дочерних товарах почему-то нет. Вывожу область текста.

          admin

          admin

          Небольшое уточнение по по поводу вывода настраиваемых полей. Чтобы все работало правильно в шаблоне после

          добавьте

            goodjiny

            Подскажите! А как мне вывести customfields помещенный в конкретную позицию?
            Выдает ошибку. 0

            admin

            admin

            Посмотрите в этой статье.
            Если не получится, то пришлите архив с файлом, при правке которого возникает ошибка.

            goodjiny

            Как выводить позицию для custom поля в карточке товара я знаю. У меня задача: выбор дочернего товора из карточки товара по значению custom поля который помещен в конретной позиции. Из Вашего кода дочернего товара, я удалил картинку, addtocart и заголовок. Мне нужно чтобы там было только custom поле. У меня насос один и тот же, только производительность 8 литров в минуту, 10 литров и 12. Мне нужно чтобы человек выбрал по характеристики дочерний товар, а не по названию или картинке. Когда я вставляю Ваш код для вывода custom поля в дочернем товаре нечего не происходит, даже если я помещаю характирустику в позицию normal.

            goodjiny

            Вопрос снят. Нашел ошибку

            admin

            admin

            Хорошо.

        Виктория

        Помогите, пожалуйста, никак не получается вывести настраиваемое поле. Уже все способы перепробовала. Крик отчаяния.

    vladimirwk

    И еще один вопрос. Можно ли как-то вставить заголовок, чтобы дочерние товары были с общим заголовком, к примеру таким "Другие цвета"?

      admin

      admin

      В шаблоне chilproduct.php перед

      добавьте

    vladimirwk

    Можно сделать так чтобы если дочерние товары закончились и у меня стоит не показывать отсутствующие товары, то вместо дочерних товаров выводился бы текст "Товары с другим цветом закончились"? Чтобы не висел заголовок "Другие цвета", а под ним ничего нет.

      admin

      admin

      Попробуйте в шаблоне заменить

      на

    vladimirwk

    Супер! Все работает. Спасибо.

    vskuchmak

    array_unshift($childIds, $parentId); // добавляем id родительского товара
    зачем при просмотре дочернего товара в список добавляете родительский? какова идея использования родителя?

      admin

      admin

      Это нужно, чтобы при выводе дочерних также показать родителя.

    vskuchmak

    я правильно понимаю, что предлагаете использовать схему работы с дочерними товарами:
    pen red
    - pen blue
    - pen green
    а не
    pen
    - pen red
    - pen blue
    - pen green

      admin

      admin

      В случае с цветами да, так будет удобнее.

    Lemuba

    А где подключать шаблон то? Так и не понял (((

      admin

      admin

      В шаблоне карточки товара в файле /components/com_virtuemart/views/productdetails/tmpl/default.php, либо в переопределенном файле /templates/t3_bs3_blank/html/com_virtuemart/productdetails/default.php

    Lelik77

    Добрый день! Как изменить размер картинок дочерних товаров?
    Добавила .child-product img { max-width: 50%; padding: 5px 0 20px 0;}
    В Файерфоксе показывает как надо, а в Хроме огромные. Спасибо.

      admin

      admin

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

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

        Lelik77

        Спасибо. Уже всё встало на свои места.

          admin

          admin

          Хорошо.

    vskuchmak

    доброе утро, каким образом можно полученный массив товаров сортировать по цене/наличию/названию и т.д.?

      admin

      admin

      Для сортировки по значениям нужно использовать функцию usort.

    Ирина

    Спасибо! Все быстро и просто!

      admin

      admin

      Рад, что статья пригодилась в работе.

    Андрей

    Добрый вечер! не подскажете как сделать чтоб дочерний товар не открывался... а только фото при клике показывалось в полный размер?
    нужно сделать чтоб выглядело так http://izhmebel-msk.ru/detskie/detskaya-komnata-kvest.html
    заранее Спасибо!

      admin

      admin

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

      Если Вы используете шаблон вывода дочерних из статьи, то нужно править файл childproduct.php.
      Для удаления ссылок замените

      на

      и замените

      на

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

    Андрей

    Спасибо за помощь! а не подскажете в каком файле смотреть код вывода самой картинки? по своему разумению думал в файле default.php но так и не смог ничего от туда применить.
    Заранее Спасибо!

      admin

      admin

      Картинки находятся в default_images.php, но лучше посмотреть их разметку уже непосредственно на странице.

    Андрей

    Подскажите пожалуйста с кодом! пролопатил и файл и разметку пытался через firefox смотреть.. ничего не выходит(

      admin

      admin

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

    Андрей

    Здравствуйте!
    подскажите как сделать кнопку купить одну? http://www.detmebel-msk.ru/detskie/detskaya-valeriya/2020-02-26-11-02-52497950864-detail
    т.е. желательно чтоб везде в поле количество стояло 0.. ,а покупатель вбивает количество где нужно и снизу купить.. .. сразу на все позиции что он выбрал.. по аналогии как тут
    http://izhmebel-msk.ru/detskaya-viktoriya/detskaya-komnata-viktoriya.html, а то если нажать добавить в корзину.. а потом продолжить покупки , он перекидывает обратно на страницу категории.. что совсем неудобно..
    и если не трудно.. подскажите код чтоб открывалась фото дочернего товара
    Заранее спасибо!

      admin

      admin

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

      Стандартными средствами не получится сделать.
      Можно использовать Catproduct или VM Cross Sale.

      vskuchmak

      это же не дочерние товары, вроде здесь была статья про сопутствующие товары, для вм2
      и как сделать, чтобы по добавить в корзину не перекидывали сразу, а менялась надпись и по клику переходило в корзину

        Андрей

        Спасибо! отличное решение! а со вторым вопросом не поможете... чтоб при клике на фото дочернего товара открывалось его большое изображение!

        admin

        admin

        Посмотрите в этой статье, возможно, поможет.

    Андрей

    Спасибо за участие! но там про другое(((

    Богдан

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

    И второй вопрос, вы указали для настройки внешнего вида можно использовать свои стили, для примера я использовал такой css, куда записывать css?
    Спасибо!

      admin

      admin

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

      Попробуйте добавить в /components/com_virtuemart/views/productdetails/tmpl/default.php перед

        looc

        Здравствуйте!
        Хотел спросить тот вариант что вы только что описали он для шаблона YooTheme подходит, или там все по другому надо делать? У меня есть также VMuikit а то без него VirtueMart не работает.

          admin

          admin

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

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

            looc

            Такой код который вы указали, куда его надо вставить?

            admin

            admin

            В css файл шаблона.

    Sheldom

    Здравствуйте. Использовал ваш шаблон из статьи. Вот что у меня получилось
    Подскажите, пожалуйста, как сделать так, чтобы:
    1. Все данные дочернего товара отразились в одной строке. Сначала маленькое фото дочернего товара - Название дочернего товара - цена (выделена жирным) - кнопка Добавить в корзину с текущими кнопками увеличения кол-ва товаров
    2. Как далее в корзине (плагин VP One Page Checkout) сделать так, чтобы отражалось не только название дочернего товара, а и название родительского товара, к примеру Amouage(родитель) Парфюмированная вода 100 мл(дочерний товар). Но при этом ссылка была на родительский товар, а не заказанный дочерний.
    3. Как сделать, чтобы в письмах приходило также двойное название Amouage(родитель) Парфюмированная вода 100 мл(дочерний товар) и ссылка на родительский товар?

    Буду благодарен за помощь. По возможности задонатю)

      admin

      admin

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

      К сожалению, в рамках статьи не могу ответить на эти вопросы.
      Пожалуйста, обратитесь на фриланс.

    Станислав

    Здравствуйте! Подскажите пожалуйста, как-то в VirtueMart 2.6.12.2 это можно прикрутить? там нет папки sublayouts..

      admin

      admin

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

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

Комментарии закрыты

С 15-18 июня admin в отпуске.

Ответы на все вопросы и ссылки на товары будут присланы 19 июня.

Спасибо за понимание и хороших выходных.

×