В предыдущей статье было рассмотрено настраиваемое поле с типом Общий дочерний вид, которое выводит товары в виде выпадающего списка.
Но что если нужно выводить дочерние товары автоматически, не прикрепляя никаких полей, по аналогии с похожими товарами?
Например, есть несколько наушников разных цветов и нужно в каждом из товаров показать товары другого цвета. Конечно, к каждому товару можно прикрепить похожие, но это долго и при добавлении новых цветов придется править все остальные товары.
Можно поступить иначе, выбрав один товар в качестве родителя, а остальные назначить дочерними.
После этого в нужном месте карточки товара подключаем специальный шаблон для вывода дочерних товаров.
1 |
echo shopFunctionsF::renderVmSubLayout('childproduct',array('product'=>$this->product)); |
Скачанный файл нужно скопировать в папку /components/com_virtuemart/sublayouts/.
Для настройки внешнего вида можно использовать свои стили, для примера я использовал такой css.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
.child-product-wrap{ display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; } .child-product{ -webkit-box-flex: 0; -ms-flex: 0 0 50%; flex: 0 0 50%; max-width: 50%; } .child-product-name{ font-size: 12px; } |
После этих нехитрых манипуляций у родителя будет показан полный список дочерних товаров, а при заходе в дочерний будет показан родитель и другие дочерние товары.
В шаблоне childproduct.php кроме изображения и названия также добавлен вывод цены и кнопки Купить.
С помощь этого шаблона можно вывести все дочерние в виде отдельной таблицы, достаточно немного поправить верстку.
Надеюсь, что статья окажется полезной и пригодится в работе.
vskuchmak
покажете на живом сайте?
admin
Демо нет, все тестировалось на локальном сервере. Если при работе возникнут какие-то проблемы, то пишите, разберемся.
vskuchmak
например у меня кнопка Купить под каждым дочерним товаром
https://kindercomfort.ru/avtokresla/avtokresla-gruppa-1-9-18kg/avtokreslo-britax-roemer-king-ii-detail
у вас при выборе цвета подразумевается полная перезагрузка страницы? не так сделано https://beru.ru/product/100210224057 ?
admin
Для скрытия цены и кнопки Купить удалите из шаблона
Контент обновляется с перезагрузкой страницы.
Если нужно дополнительно выделять выбранный товар, то добавить это можно, напишите на admin@virtuemart.su
spro1
Добрый день!
Спасибо за статью, на последней версии VM работает отлично, сделал за пару минут.
У меня задача сделать карточку товара, как тут https://myscent.ru/brands/kenzo/men/l_eau_par_kenzo_pour_homme/
Получается есть товар с характеристиками, в карточке выводятся дочерние товары со своей ценой и контролем остатков.
Вопрос вот какой: нужно чтобы основной товар не имел цены и не мог быть заказан, а заказать можно было бы только дочерние. При этом дочерние нужно вообще скрыть, у них не должно быть своей карточки и видно их должно быть только в родительском.
Это возможно?
Пока вот думаю, что в шаблоне надо убрать ссылки на дочерние товары, а у родительского просто удалить код вывода кнопки купить.
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
Для вывода краткого описания используйте этот код
Настраиваемые поля можно вывести с помощью кода из этой статьи. Если не получится, то уточните какая позиция вывода у полей, которые нужно вывести.
vladimirwk
Краткое описание и общий заголовок вывел. Настраиваемое поле не выводится. Вывожу в своей позиции под названием "magazin", вывод осуществляю по той статье на которую вы дали ссылку, в карточке товара и в модуле выводится нормально, а в дочерних товарах почему-то нет. Вывожу область текста.
admin
Небольшое уточнение по по поводу вывода настраиваемых полей. Чтобы все работало правильно в шаблоне после
добавьте
goodjiny
Подскажите! А как мне вывести customfields помещенный в конкретную позицию?
Выдает ошибку. 0
admin
Посмотрите в этой статье.
Если не получится, то пришлите архив с файлом, при правке которого возникает ошибка.
goodjiny
Как выводить позицию для custom поля в карточке товара я знаю. У меня задача: выбор дочернего товора из карточки товара по значению custom поля который помещен в конретной позиции. Из Вашего кода дочернего товара, я удалил картинку, addtocart и заголовок. Мне нужно чтобы там было только custom поле. У меня насос один и тот же, только производительность 8 литров в минуту, 10 литров и 12. Мне нужно чтобы человек выбрал по характеристики дочерний товар, а не по названию или картинке. Когда я вставляю Ваш код для вывода custom поля в дочернем товаре нечего не происходит, даже если я помещаю характирустику в позицию normal.
goodjiny
Вопрос снят. Нашел ошибку
admin
Хорошо.
Виктория
Помогите, пожалуйста, никак не получается вывести настраиваемое поле. Уже все способы перепробовала. Крик отчаяния.
vladimirwk
И еще один вопрос. Можно ли как-то вставить заголовок, чтобы дочерние товары были с общим заголовком, к примеру таким "Другие цвета"?
admin
В шаблоне chilproduct.php перед
добавьте
vladimirwk
Можно сделать так чтобы если дочерние товары закончились и у меня стоит не показывать отсутствующие товары, то вместо дочерних товаров выводился бы текст "Товары с другим цветом закончились"? Чтобы не висел заголовок "Другие цвета", а под ним ничего нет.
admin
Попробуйте в шаблоне заменить
на
vladimirwk
Супер! Все работает. Спасибо.
vskuchmak
array_unshift($childIds, $parentId); // добавляем id родительского товара
зачем при просмотре дочернего товара в список добавляете родительский? какова идея использования родителя?
admin
Это нужно, чтобы при выводе дочерних также показать родителя.
vskuchmak
я правильно понимаю, что предлагаете использовать схему работы с дочерними товарами:
pen red
- pen blue
- pen green
а не
pen
- pen red
- pen blue
- pen green
admin
В случае с цветами да, так будет удобнее.
Lemuba
А где подключать шаблон то? Так и не понял (((
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
Здравствуйте!
Пришлите ссылку на страницу с проблемой.
Lelik77
https://detskaya-ya.ru/odezhda/demisezonnye-kombinezony-i-konverty/kombinezon-na-podklade-pushistik-molochnyj-detail
Lelik77
Спасибо. Уже всё встало на свои места.
admin
Хорошо.
vskuchmak
доброе утро, каким образом можно полученный массив товаров сортировать по цене/наличию/названию и т.д.?
admin
Для сортировки по значениям нужно использовать функцию usort.
Ирина
Спасибо! Все быстро и просто!
admin
Рад, что статья пригодилась в работе.
Андрей
Добрый вечер! не подскажете как сделать чтоб дочерний товар не открывался... а только фото при клике показывалось в полный размер?
нужно сделать чтоб выглядело так http://izhmebel-msk.ru/detskie/detskaya-komnata-kvest.html
заранее Спасибо!
admin
Здравствуйте!
Если Вы используете шаблон вывода дочерних из статьи, то нужно править файл childproduct.php.
Для удаления ссылок замените
на
и замените
на
Для увеличения картинки нужно поправить код вывода самой картинки. Посмотрите как увеличивается картинка в товара и сделайте ля дочерних по аналогии.
Андрей
Спасибо за помощь! а не подскажете в каком файле смотреть код вывода самой картинки? по своему разумению думал в файле default.php но так и не смог ничего от туда применить.
Заранее Спасибо!
admin
Картинки находятся в default_images.php, но лучше посмотреть их разметку уже непосредственно на странице.
Андрей
Подскажите пожалуйста с кодом! пролопатил и файл и разметку пытался через firefox смотреть.. ничего не выходит(
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
Здравствуйте!
Стандартными средствами не получится сделать.
Можно использовать Catproduct или VM Cross Sale.
vskuchmak
это же не дочерние товары, вроде здесь была статья про сопутствующие товары, для вм2
и как сделать, чтобы по добавить в корзину не перекидывали сразу, а менялась надпись и по клику переходило в корзину
Андрей
Спасибо! отличное решение! а со вторым вопросом не поможете... чтоб при клике на фото дочернего товара открывалось его большое изображение!
admin
Посмотрите в этой статье, возможно, поможет.
Андрей
Спасибо за участие! но там про другое(((
Богдан
Здравствуйте!
Скачал шаблон childproduct.php добавил в указанную папку, пожалуйста помогите понять куда вставить код?
И второй вопрос, вы указали для настройки внешнего вида можно использовать свои стили, для примера я использовал такой css, куда записывать css?
Спасибо!
admin
Здравствуйте!
Попробуйте добавить в /components/com_virtuemart/views/productdetails/tmpl/default.php перед
looc
Здравствуйте!
Хотел спросить тот вариант что вы только что описали он для шаблона YooTheme подходит, или там все по другому надо делать? У меня есть также VMuikit а то без него VirtueMart не работает.
admin
Здравствуйте!
Точно не могу сказать, не тестировал в данных шаблонах.
looc
Такой код который вы указали, куда его надо вставить?
admin
В css файл шаблона.
Sheldom
Здравствуйте. Использовал ваш шаблон из статьи. Вот что у меня получилось
Подскажите, пожалуйста, как сделать так, чтобы:
1. Все данные дочернего товара отразились в одной строке. Сначала маленькое фото дочернего товара - Название дочернего товара - цена (выделена жирным) - кнопка Добавить в корзину с текущими кнопками увеличения кол-ва товаров
2. Как далее в корзине (плагин VP One Page Checkout) сделать так, чтобы отражалось не только название дочернего товара, а и название родительского товара, к примеру Amouage(родитель) Парфюмированная вода 100 мл(дочерний товар). Но при этом ссылка была на родительский товар, а не заказанный дочерний.
3. Как сделать, чтобы в письмах приходило также двойное название Amouage(родитель) Парфюмированная вода 100 мл(дочерний товар) и ссылка на родительский товар?
Буду благодарен за помощь. По возможности задонатю)
admin
Здравствуйте!
К сожалению, в рамках статьи не могу ответить на эти вопросы.
Пожалуйста, обратитесь на фриланс.
Станислав
Здравствуйте! Подскажите пожалуйста, как-то в VirtueMart 2.6.12.2 это можно прикрутить? там нет папки sublayouts..
admin
Здравствуйте!
Во второй версии весь код нужно размещать непосредственно в шаблоне карточки товара.
Точного решения не подскажу, давно с этой версией не работал.