Дочерние товары с отображением как в VM1
- Nevco
-
Автор темы
- Не в сети
- Новый участник
-
Less
Больше
- Сообщений: 3
- Спасибо получено: 1
11 года 11 мес. назад #5107
от Nevco
Nevco создал тему: Дочерние товары с отображением как в VM1
Всем привет! Подскажите, кто знает. Можно ли в VM2 сделать отображение дочерних товаров также как в VM1, а именно меня интересует вывод на одну страницу одновременно родительского товара и дочерних, при этом по каждому товару можно отдельно выбирать кол-во и иметь поле для вставки комментария, а вот кнопка «Купить» должна быть на странице одна для всех товаров. Я установил VM2, но вот тот шаблон, который идет по умолчанию какой-то «кривенький», и сколько бы я не пытался добиться нужного результата ничего не получается, вот у меня и возник вопрос - вина этому кривой шаблон который просто не выводит правильно товары или в VM2 такого вообще не возможно сделать.
Вот пример:
Допустим продается мебель, которую можно сконструировать из различных комплектующих. Главный родительский товар это каркас шкафа, он может низкий, высокий или широкий, т.е. 3 вида каркаса. К этому каркасу можно купить различные аксессуары, например дочерний товар полочки, которая может быть разной по глубине, по ширине, а может быть еще и по цвету. Второй дочерний товар это дверцы, они могут быть стеклянные, сплошние, цветные и т.д. Третий дочерний товар это ножки для шкафа - несколько моделей, еще один дочерний товар это ручки для дверей. Посетитель выбирает сначало размер каркаса, и дополняет его разными комплектующими, при этом указывая в каком кол-ве нужны полки, дверцы, ножки и пр..., а потом нажимает "купить" и заказ готов.
Вот пример:
Допустим продается мебель, которую можно сконструировать из различных комплектующих. Главный родительский товар это каркас шкафа, он может низкий, высокий или широкий, т.е. 3 вида каркаса. К этому каркасу можно купить различные аксессуары, например дочерний товар полочки, которая может быть разной по глубине, по ширине, а может быть еще и по цвету. Второй дочерний товар это дверцы, они могут быть стеклянные, сплошние, цветные и т.д. Третий дочерний товар это ножки для шкафа - несколько моделей, еще один дочерний товар это ручки для дверей. Посетитель выбирает сначало размер каркаса, и дополняет его разными комплектующими, при этом указывая в каком кол-ве нужны полки, дверцы, ножки и пр..., а потом нажимает "купить" и заказ готов.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
-
- Не в сети
- Администратор
-
Less
Больше
- Сообщений: 2869
- Спасибо получено: 659
11 года 10 мес. назад #5127
от Wedal
Wedal ответил в теме Дочерние товары с отображением как в VM1
Nevco, посмотрите по этим ссылкам:
www.joomla-create.net/item/custom-fields.html
joomlaforum.ru/index.php/topic,218871.msg1147748.html#msg1147748
другого не встречал.
www.joomla-create.net/item/custom-fields.html
joomlaforum.ru/index.php/topic,218871.msg1147748.html#msg1147748
другого не встречал.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Nevco
-
Автор темы
- Не в сети
- Новый участник
-
Less
Больше
- Сообщений: 3
- Спасибо получено: 1
11 года 10 мес. назад - 11 года 10 мес. назад #5139
от Nevco
Nevco ответил в теме Дочерние товары с отображением как в VM1
Wedal, спасибо за ссылки, я ранее это уже видел…
Как известно всегда есть несколько способов решения одной и той же проблемы… Вот и я после долгих мучений решил пойти другим путем, т.к. задуманный алгоритм на самом деле (почти) выполняется стандартными средствами VM2 и без всяких хаков. Точнее будет сказать - внешний вид на странице отображения товара будет такой как нужно заказчику, но вот дальше не очень удобно получается - в корзине отображается достаточно много лишней информации.
Делается это так:
Вместо полного описания товара, а можно и вместе с ним создать HTML код нужной страницы, со всякими нужными полями, украшениями и пр…, тут конечно же пригодится знание html, CSS и JS… В VM2 есть замечательная вешь, в шаблоне отображения товара можно создавать позиции для показа в них настраиваемых полей. Добавляем позицию, например «hiddenInfo», которая будет скрывать все, что в нее будет помещено. Эта позиция должна быть в районе атрибутов корзины, рядом с кнопкой «Купить». После создаем необходимое кол-во и типы настраиваемых полей, но вот везде указываем размещение в нужной нам позиции «hiddenInfo». Получается что настраиваемых полей может быть сколько угодно, но они не видимы посетителю и в тоже время влияют на формирование цены и самого товара. Теперь дело на себя берет JS, который считывает действия посетителя и вносит нужную информацию в скрытые поля. В итоге получится один товар, включающий в себя любые опции.
Подобное я уже делал одному заказчику на предыдущей версии VM, смотрите по ссылке: skypeinmoscow.ru/ru/uslugi-svyazi/mnogokanalnyy-nomer.html , там на одной странице товара можно выбрать кучу многоканальных телефонных номеров + тарифный план, а в итоге формируется разом приличный заказ состоящий из нескольких позиций.
Проблемы реализации:
На текущий момент есть только две проблемы, которые похоже легко решаются, возможно далее что еще найду.
1- Для указания кол-ва для каждого дочернего товара, точнее для каждого настраиваемого поля, приходится делать поле атрибут корзины, который если был бы видимым то выглядел бы как выпадающий список с выбором кол-ва товаров ну и прописывать отдельно стоимость товара при разной кол-ве, например 1 шт. – 10 руб., 2 шт. – 20 руб. и т.д… Таким образом настраиваемое поле «полка Белого цвета, шириной 40 см.» в основном товаре «Каркас» указывается столько раз сколько посетитель может вообще заказать. Если в каркас влезает не более 6 полок, то добавляем это поле 7 раз, т.к. нужно учесть что кол-во может быть равно «0» - 0,1,2,3,4,5,6
2- После того как товар положили в корзину, то получается очень много лишней информации, а именно видны дочерние товары, они же настраиваемые поля, которые не выбирал посетитель. Предварительно думаю решить через хак, пока еще не нашел что исправлять, но по сути просто – если значение поля равно «0», то оно не должно отображаться, хак нужно будет повторить как при выводе информации в корзине, так и в отправляемом подтверждении посетителю.
Кроме этого я все же уже вмешался в код и сделал более логичным (на мой взгляд) формирование окончательной цены за товар. Сейчас уже не помню где именно видел… В VM2 в настраиваемых полях при применении новой цены не обрабатывается знак «=» как это было в VM1, «+» и «-» обрабатываются, а вот «=» никак… О сути проблемы не буду писать, там все упирается в тип поля базы данных, решение простое:
1- Открыть скрипт: \administrator\components\com_virtuemart\helpers\calculationh.php
2- Найти: function getProductPrices и найти: $basePriceShopCurrency = $basePriceShopCurrency + doubleval($variant);
3- Заменить $basePriceShopCurrency = $basePriceShopCurrency + doubleval($variant); на $basePriceShopCurrency = doubleval($variant);
В итоге: цена меняется на указанную в настраиваемом поле, а не прибавляется к начальной базовой цене. Если же настраиваемых полей больше чем одно, то они просто будут суммироваться, и базовая цена будет меняться на полученную сумму. Кому то это будет лишнее но в моем случае то что надо, а то иначе приходится каждый раз учитывать базовую стоимость товара при создании настраиваемого поля.
Как известно всегда есть несколько способов решения одной и той же проблемы… Вот и я после долгих мучений решил пойти другим путем, т.к. задуманный алгоритм на самом деле (почти) выполняется стандартными средствами VM2 и без всяких хаков. Точнее будет сказать - внешний вид на странице отображения товара будет такой как нужно заказчику, но вот дальше не очень удобно получается - в корзине отображается достаточно много лишней информации.
Делается это так:
Вместо полного описания товара, а можно и вместе с ним создать HTML код нужной страницы, со всякими нужными полями, украшениями и пр…, тут конечно же пригодится знание html, CSS и JS… В VM2 есть замечательная вешь, в шаблоне отображения товара можно создавать позиции для показа в них настраиваемых полей. Добавляем позицию, например «hiddenInfo», которая будет скрывать все, что в нее будет помещено. Эта позиция должна быть в районе атрибутов корзины, рядом с кнопкой «Купить». После создаем необходимое кол-во и типы настраиваемых полей, но вот везде указываем размещение в нужной нам позиции «hiddenInfo». Получается что настраиваемых полей может быть сколько угодно, но они не видимы посетителю и в тоже время влияют на формирование цены и самого товара. Теперь дело на себя берет JS, который считывает действия посетителя и вносит нужную информацию в скрытые поля. В итоге получится один товар, включающий в себя любые опции.
Подобное я уже делал одному заказчику на предыдущей версии VM, смотрите по ссылке: skypeinmoscow.ru/ru/uslugi-svyazi/mnogokanalnyy-nomer.html , там на одной странице товара можно выбрать кучу многоканальных телефонных номеров + тарифный план, а в итоге формируется разом приличный заказ состоящий из нескольких позиций.
Проблемы реализации:
На текущий момент есть только две проблемы, которые похоже легко решаются, возможно далее что еще найду.
1- Для указания кол-ва для каждого дочернего товара, точнее для каждого настраиваемого поля, приходится делать поле атрибут корзины, который если был бы видимым то выглядел бы как выпадающий список с выбором кол-ва товаров ну и прописывать отдельно стоимость товара при разной кол-ве, например 1 шт. – 10 руб., 2 шт. – 20 руб. и т.д… Таким образом настраиваемое поле «полка Белого цвета, шириной 40 см.» в основном товаре «Каркас» указывается столько раз сколько посетитель может вообще заказать. Если в каркас влезает не более 6 полок, то добавляем это поле 7 раз, т.к. нужно учесть что кол-во может быть равно «0» - 0,1,2,3,4,5,6
2- После того как товар положили в корзину, то получается очень много лишней информации, а именно видны дочерние товары, они же настраиваемые поля, которые не выбирал посетитель. Предварительно думаю решить через хак, пока еще не нашел что исправлять, но по сути просто – если значение поля равно «0», то оно не должно отображаться, хак нужно будет повторить как при выводе информации в корзине, так и в отправляемом подтверждении посетителю.
Кроме этого я все же уже вмешался в код и сделал более логичным (на мой взгляд) формирование окончательной цены за товар. Сейчас уже не помню где именно видел… В VM2 в настраиваемых полях при применении новой цены не обрабатывается знак «=» как это было в VM1, «+» и «-» обрабатываются, а вот «=» никак… О сути проблемы не буду писать, там все упирается в тип поля базы данных, решение простое:
1- Открыть скрипт: \administrator\components\com_virtuemart\helpers\calculationh.php
2- Найти: function getProductPrices и найти: $basePriceShopCurrency = $basePriceShopCurrency + doubleval($variant);
3- Заменить $basePriceShopCurrency = $basePriceShopCurrency + doubleval($variant); на $basePriceShopCurrency = doubleval($variant);
В итоге: цена меняется на указанную в настраиваемом поле, а не прибавляется к начальной базовой цене. Если же настраиваемых полей больше чем одно, то они просто будут суммироваться, и базовая цена будет меняться на полученную сумму. Кому то это будет лишнее но в моем случае то что надо, а то иначе приходится каждый раз учитывать базовую стоимость товара при создании настраиваемого поля.
Последнее редактирование: 11 года 10 мес. назад пользователем Wedal.
Спасибо сказали: Wedal
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
-
- Не в сети
- Администратор
-
Less
Больше
- Сообщений: 2869
- Спасибо получено: 659
11 года 10 мес. назад #5145
от Wedal
Wedal ответил в теме Дочерние товары с отображением как в VM1
Nevco, спасибо, что поделились. Было интересно почитать. Добавил в ваш пост отступы, а то был сплошной текст.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.