Интернет-магазин в общем понимании является не чем иным, как каталогом товаров. Да, у него есть возможность оформлять заказы через корзину, принимать деньги, указывать, куда и как требуется доставить товар, но первична все-таки витрина, представление товаров потенциальным покупателям. В этой статье я расскажу про очень важную часть Virtuemart 2 – настраиваемые поля. С их помощью каталог товаров можно сделать максимально разнообразным. Создать различные фильтры и свойства товаров, создать дочерние товары и просто внести дополнительные данные о товаре в форме анкеты. Работа с настраиваемыми полями Virtuemart 2 достаточно сложна, но для многих интернет-магазинов такие поля просто необходимы. В этой статье я расскажу о типах, назначении и возможностях настраиваемых полей Virtuemart 2.
Содержание
Виды полей
Прежде всего, нужно понять, что настраиваемые поля бывают нескольких видов. Эти виды используются для совершенно разных задач и нужно четко разделять их между собой (кроме того, не путайте настраиваемые поля Virtuemart с настраиваемыми полями Joomla). Вот они:
- Настраиваемые поля без контроля остатка, являющиеся атрибутом корзины (аналог свойств товара из Virtuemart 1.1.x);
- Настраиваемые поля без контроля остатка, не являющиеся атрибутом корзины (аналог типов товара из Virtuemart 1.1.x);
- Настраиваемые поля с контролем остатка (аналог дочерних товаров из Virtuemart 1.1.x);
- Настраиваемые поля, заполняемые пользователями (Не путайте с полями, заполняемыми пользователями при оформлении заказа! Это совсем другое.);
Вообще, хочу сказать, что вся эта терминология очень запутанная. Если в Virtuemart 1.1.x, в свойствах, параметрах, типах, дочерних товарах было очень сложно разобраться, то в Virtuemart 2 легче не стало, пожалуй, даже наоборот…
Чтобы лучше разобраться с видами настраиваемых полей, опишу каждый из них отдельно.
Настраиваемые поля без контроля остатка, являющиеся атрибутом корзины
Данный вид полей позволяет добавлять товарам различные платные свойства, или, наоборот, делать скидку на цвет, размер, и.т.д. Как это работает? Представьте, что вы продаете телефон «Звонилла 3000». Он имеется у вас в разных цветах, при этом стоимость телефона любого цвета при закупке для вас одинакова. Остатки по цветам вы также не контролируете, поскольку в этом нет надобности. Всего имеется 5 цветов телефонов: белый, черный, синий, зеленый, фиолетовый. «Звонилла 3000» пользуется популярностью, и вы знаете, что телефоны белого и черного цвета у вас разберут быстро. Синий – цвет нейтральный. Спрос на него обычный. А зеленый и фиолетовый – плохие цвета для телефона. Телефоны таких цветов покупают мало.
Вам нужно продать телефоны всех цветов за примерно одинаковое время. Как же быть? Вам в голову пришла маленькая хитрость: почему бы не продавать популярные цвета на 500 рублей дороже, а непопулярные на 500 рублей дешевле? В итоге получится, что все цвета проданы за одинаковое время и по одинаковой стоимости. Остается это реализовать.
Для реализации такой задумки как раз подойдут поля такого вида. Остаток контролировать не нужно, но нужно предоставить покупателю возможность выбрать цвет и в зависимости от цвета немного изменить цену. После добавления в корзину покупатель должен видеть, телефон какого цвета он заказал.
Для реализации задумки создадим новое текстовое поле «Цвет», для которого выставим настройки, как показано на рисунке:
После этого добавляем новый товар «Звонилла 3000» и в последней вкладке выбираем наше созданное поле. Выбрать придется столько раз, сколько свойств у нас имеется, т.е. 5(можно делать это один раз, сгруппировав поля, но об этом позже):
После этого сохраняем товар и смотрим, как он выглядит на сайте:
Выбираем свойство, добавляем товар в корзину и смотрим, как она выглядит:
Как видно, наш товар в корзине и для него указано свойство «Цвет».
Аналогично можно создавать многие другие свойства, ограничить здесь вас может только ваша фантазия.
Настраиваемые поля без контроля остатка, не являющиеся атрибутом корзины
Этот вид полей наиболее распространенный. Такие поля используются в двух случаях: когда требуется добавить дополнительную информацию о товаре, которая должна располагаться в каком-то определенном месте на странице товара, отличном от стандартного описания, или когда требуется производить поиск и фильтрацию товаров по этому полю.
По настройкам данный вид полей отличается от предыдущего только тем, что в опции «Атрибут корзины» выставляется «Нет».
Давайте рассмотрим пример поля данного вида.
Предположим, что в продажу поступила новая модель мобильного телефона «Звонилла 3020», которая отличается от «Звонилла 3000» тем, что имеет не 10, а 20мб встроенной памяти, а также процессор «Звон 3.2», а не «Звон 3». Мы хотим, чтобы в нашем магазине информация о количестве памяти и процессоре отображалась бы в отдельном блоке, отличном, от стандартного описания. Также мы хотим иметь возможность поиска товаров по типу процессора и количеству памяти. Здесь нам помогут поля данного вида.
Создаем 2 новых поля «Процессор» и «Объем памяти»:
Создаем новый товар «Звонилла 3020» и выбираем в дополнительных полях «Процессор» и «Память». Сохраняем. А для старой модели «Звонилла 3000» редактируем набор полей.
После этого можем посмотреть, как данные будут выглядеть на сайте.
Оформить, конечно, можно гораздо лучше. Это лишь пример.
Также данный вид полей подходит для того, чтобы добавлять товарам знаки привлекающие внимание, например, «Хит продаж». Для этого используется поля типа checkbox, хотя можно сделать и по-другому, в зависимости от задачи.
Что касается фильтрации, то здесь нужен отдельный модуль. Все хорошие модули фильтрации для Virtuemart 2 платные, но многие из них стоят своих, небольших, денег. Обзор модулей фильтрации для Virtuemart 2 будет в одной из следующих статей серии.
Настраиваемые поля с контролем остатка
Контроль остатков нужен тогда, когда мы имеем не просто разные цвета телефонов, а опции, в значительной степени, отличающиеся и имеющие свое количество и стоимость. Примером таких видов полей могут служить защитная пленка для телефона и дизайнерский чехол. Важно отметить, наши пленка и чехол являются товарами, подходящими только к данной модели телефона, но не к другим. Если аксессуары подходят к нескольким моделям, их имеет смысл оформлять, как отдельные товары категории «Аксессуары», а вот если аксессуар уникален для единственного товара, то он будет дочерним товаром. Возможно, пример с телефоном и пленкой не очень наглядный. Гораздо более понятным будет пример с кухонным гарнитуром, который мы можем купить в разных комплектациях. Весь гарнитур целиком будет основным товаром, а каждый отдельный ящик гарнитура, столешница, мойка, и.т.д. – дочерними товарами(этим типом настраиваемых полей).
Тема дочерних товаров в Virtuemart 2 пока не очень проработана, поскольку весьма сложна в реализации. Да и описание потянет на отдельную статью. Поэтому описание дочерних товаров и принципов работы с ними я отложу еще на некоторое время, до выпуска более стабильных версий Virtuemart 2.
Настраиваемые поля, заполняемые пользователями
Это также довольно полезный вид полей. Иногда требуется дать покупателю возможность самому ввести какую-то дополнительную информацию о товаре. Например, представим, что «Звонилла 3000» продается вместе с услугой гравировки какого-либо текста на задней крышке. Услуга оплачивается дополнительно. Перед покупкой пользователь должен задать этот текст, который потом будет доступен вместе с заказом. Для реализации подобной идеи создаем поле, заполняемое пользователем:
Добавляем это поле к товару и задаем для него цену:
Смотрим, что получилось на сайте:
Как только пользователь начнет вписывать текст, общая цена товара автоматически увеличится на цену гравировки без перезагрузки страницы. После того, как товар добавлен в корзину, поскольку в настройках мы установили, что данное поле является атрибутом корзины, то в ней мы увидим следующее:
Всё, с видами полей разобрались. Не путайте «виды полей» с «типами полей». Виды – это классификация по функциональным возможностям, а типы – по способу ввода и отображения. Типы полей – это: строка, число, логический, область текста, и.т.д. Подробнее о типах полей, их настройке и отображении, мы поговорим в следующей статье серии.
-------------------------------
Кстати, насчет фильтрации по настраиваемым полям. Бесплатных толковых расширений вы не найдете, но есть очень приличные за совсем небольшую плату, например вот этот фильтр для Virtuemart 2. Разработчик русский. Большое количество настроек, ну и цена совсем невысока.
писал я об этих типах фильтра
нашел! не поленился )
Я столкнулся с проблемой - сделал все как в статье, использовал тип изображение. Но в итоге флаговые кнопки в одной стороне, картинки в другой, описание вообще под кнопками лежит. Ничего не могу сделать. Подскажите, пожалуйста, как с этим боротся???
Опубликовали бы тогда уж пример :)
позиции шаблона?
в кавычках, в скобках, без?
я спрашивал - "КАК и ЧТО туда вносить?", а не "для чего?"
Т.е. буквенно-цифровые символы, которые являются именем позиции?
При настройке Настраиваемых полей "Вид хрусталя" возникли следующие проблемы:
1. В карточке товара пункты выбора - "съехали" от самих видов хрусталя: http://torg-business.ru/katalog/dorogie-svetilniki-i-lyustry-s-pozolotoj-serebreniem-bronzoj/lyustra-pj-3015d-v-serebre-925-na-8-lamp-detail
2. Первоначально я пытался использовать функцию Override чтобы назначить скидку на оба вида хрусталя, но вышла ерунда и не убирается назад (снимаю галочку - она самовосстанавливается).
1. Это исключительно проблемы верстки.
2.С ценами и скидками пока вообще все работает не очень хорошо. Хотел писать статью по этому вопросу, заглянул в код и понял, что лучше пока ее отложить :-). Я бы советовал пока использовать только базовую цену и скидки, которые настраиваются отдельно.
Вот еще такая задачка есть:
В продаже есть товар из разного материала (Флок, Кожзаменитель и тп), и разного цвета. Причем у Флока - много вариантов цвета, у Кожзаменителя только белый и черный. А вдруг появится новый материал или новый цвет. Можно ли добавить новый материал или новый цвет в список возможных, а в товарах они сами добавятся?
У дочернего товара не указана категория => это вариант родительского товара => не выводится на странице категории. А у меня при создании дочернего товара ему автоматически присваивалась категория родителя.
внести шину и тогда Настраиваемые поля без контроля остатка, не являющиеся атрибутом корзины - это будет размер шины, сезон и диаметр для каждой конкретной единицы?
или сделать некий товар условно Шина Мишлен и у ее дочерние товары - это ее типоразмеры с разными ценами?
что бы Вы посоветовали с точки зрения организации данных?
Если же контролировать остатки не требуется, то ваш первый способ будет в самый раз.
не:
вес 100 гр. 20 у.е.
вес 250 гр. + 15 у.е.
вес 370 гр. + 25 у.е
а:
вес 100 гр. 20 у.е.
вес 250 гр. 35 у.е.
вес 370 гр. 45 у.е
т.е. не плюсует, а четкая цена указана.
Если вообще не интересует прибавление или вычитание ни для одного из товаров, а нужна лишь постоянная цена из настраиваемых полей, можно поступить следующим образом:
1. открываем файл administrator/components/com_virtuemart/helpers/calculationh.php
2. находим строчку $basePriceShopCurrency = $basePriceShopCurrency + doubleval($variant); и убираем суммирование, т.е. останется $basePriceShopCurrency = doubleval($variant);
Убираем знак "+" перед ценой:
1. открываем файл administrator/components/com_virtuemart/models/customfields.php
2. находим static function _getCustomPrice
3. в строке $price ="+".$price; убираем "+".
Один выход пока заменить "имя" на телефон а еще в коде name поменять на phone
Может кто-то решил задачу? Как вывести настраиваемые поля в список товаров? Непосредственно в категорию, например, после заголовка сразу? Спасибо.
На сайте в адмипанели для товаров в процессе их редактирования нужно иметь настраиваемое поле, с уже готовыми вариантами значений, т.е. чтобы в админке для значений настроиваемого поля предлагался выпадающий список возможных вариантов. Как это делается?
Когда у товара есть скидка и к размеру добавляется сума в настраиваемых полях (например +10$), то в корзине эти 10$ плюсуются к скидке почему-то, а не к цене товара
Например: Цена: $20.00, скидка -2.50$, Размер 50 +10$
А выдает в корзине
Цена: $20.00
Цена без скидки: $32.50
Скидка: $12.50
Размер 50 +10$
если скидку убираешь, то все нормально +10$ плюсуются к цене.
Что я ни так настроила?
Попробуйте другие виды скидок.
Что могу посоветовать? Во-первых, убедитесь, что у вас последняя версия - Virtuemart 2.0.22. В каждом обновлении разработчики исправляют такие баги. Если проблема остается на последней версии, то придется ковырять код корзины, либо изменить названия этих полей в корзине на более подходящие под то, что они показывают.
что бы было так
http://yadi.sk/d/bEjUTTHl9b3T3
Надо создать поле с типом "Атрибут корзины", а не "Строка". Не путайте "Атрибут корзины" в настройках поля.
Подскажите, пожалуйста, что нужно сделать?
Спасибо!
Может подскажите какие файлы надо заменить в шаблоне?
Вопрос - возможно ли сделать изменение цены не "на" (+,-), а "в" раз (*). У меня товар - вода, но продается только упаковками, в упаковке 8 либо 16 бутылок. Мне нужно количество бутылок умножить на цену одной бутылки.
Где подправить чтобы в не стандартном шаблоне появился выбор?
Стандартный макет находится в components/com_virtuemart/макет/tmpl/название макета.
Сравните эти два файла. Посмотрите, как выводятся поля в стандартном и в вашем. Там поймете, что подправить.
Не забудьте переопределить макет в используемый шаблон Joomla.
По jQuery гуглите:
"jQuery событие на клик"
"jQuery изменить класс"
Набор1: и там различные варианты отмечаемые чекбоксом.
Похожее видел на картинке http://sm-planet.net/cache/widgetkit/gallery/8/easycheckbox-frontend-4f34f5cca3.png
Столкнулась с проблемой вот какого рода. Настраиваемые поля создаются, им можно присвоить значение, они пишутся в базу и по ним работает фильтр. Работает без нареканий. НО. В админке в карточке товара я не вижу значений, которые я присвоила конкретному товару, все время пишет - "Нет настраиваемых полей. Пожалуйста, используйте список, чтобы добавить несколько новых полей". Хотя по ряду товаров используется даже и не одно и не два поля. И в карточку товара поля не выводятся невзирая ни на какие танцы с бубном.
Нет ли у Вас идеи, в чем тут может быть проблема?
Спасибо.
Joomla 2.5.18, Virtuemart 2.0.26d Фильтр VM Custom Filters Pro 2.2.9
Поля создаю обычным неэкзотическим способом, через админку virtuemart скриншот http://temp.agpost.ru/1.png
Так выглядят типовые настройки типового поля
http://temp.agpost.ru/2.png
Так выглядит часть списка полей
http://temp.agpost.ru/3.png
Это я вижу когда захожу уже в админке в карточку товара на вкладку "Настраиваемые поля" после того, как выберу группу полей, которые хочу заполнить для данного товара
http://temp.agpost.ru/4.png
Поля заполнила, сохранила, и, сразу после сохранения вижу вот это:
http://temp.agpost.ru/5.png
Но. В базу поля пишутся и фильтрация по ним ведется корректно. Просто крайне неудобно то, что в админке, в карточке товара, я не вижу, какие поля я для этого конкретного товара заполнила, и какие значения я туда вписала. И, если мне захочется переназначить одно поле из группы, то переназначать мне придется ВСЕ поля из группы, потому что они при подгрузке будут иметь дефолтные значения, а не значения, которые присвоены им и записаны в базу.
В общем все выглядит так, как будто Вы заполнили описание для товара, оно в базу записалось и на странице магазина отображается, но в админке Вы видите пустое поле вместо описания, и, для его корректировки, снова приходится пастить туда весь текст, править его и сохранять. И так по кругу.
Версия Virtuemart 2.0.26d сильно устарела. Стоит попробовать обновить Virtuemart до последней версии ветки 3, либо до последней версии ветки 2. Все версии здесь: http://dev.virtuemart.net/projects/virtuemart/files . Обновлять пробуйте ТОЛЬКО на тестовом хостинге, либо в обязательном порядке сделав резервную копию сайта. Вероятность некоторых проблем с версткой после обновления ~ 50%. Если после обновления ошибка исчезнет, значит нужно идти по этому пути. Если нет - нужно искать какие-то проблемы на сайте.
Работы с настраиваемыми полями Virtuemart 2 достаточно сложна,
Я новичок в Virtuemart.
Не могли бы Вы рассказать на простом примере как применить настраиваемые поля для смены цвета картинки в карточке товара в Virtuemart 3 (Joomla3.8.x).
С уважением.
Если вы хотите пользователям дать возможность изменять цвет в карточке без смены изображения, то можете использовать платное расширение: https://breakdesigns.net/extensions/joomla/custom-fields-for-all . С его помощью можно также и фильтровать товары по цветам.
Если же вы хотите пользователям дать возможность изменять цвет так, чтобы вместе с выбором цвета изменялось и изображение, посмотрите в сторону: https://breakdesigns.net/extensions/joomla/stockable-custom-fields
Если же вам нужно еще и контролировать остатки по каждому цвету или вы не хотите использовать платные расширения, читайте про дочерние товары Virtuemart. Также посмотрите эту статью: http://wedal.ru/rasshireniya-joomla/virtuemart-2-internet-magazin-na-joomla-chast-8-dochernie-tovary-s-kontrolem-ostatkov-stockable-variants-plugin.html
Мне нужен простой бесплатный вариант выбора цвета товара, чтобы вместе с выбором цвета изменялось и изображение. Контроль остатков пока не требуется.
Все, что вы советуете на сайте wedal.ru я смотрел. Но пока не получается. Проблема в том, что VM версии 3 и Joomla 3.8.
Если бы расписать все действия по шагам, то такая инструкция принесла бы пользу многим разработчикам.