- Настраиваемые поля virtuemart 3: строка (часть 1)
- Создание настраиваемого поля и вывод его в товаре
- Вывод произвольного атрибута
- Вывод произвольного атрибута из готового списка
- Добавление атрибута в корзину
- Вывод свойств товара, влияющих на конечную стоимость
- Кнопка Купить с внешней ссылкой
- Похожие статьи :
- Сергей
- stylus83
- admin
- Михаил
- admin
- Михаил
- admin
- Михаил
- admin
- Рий
- Рий
- admin
- стас
- Татьяна
- Татьяна
- admin
- vmven
- admin
- vmven
- admin
- spro1
- admin
- admin
- Рий
- admin
- BHy4eK
- admin
- Рий
- Человек
- admin
- DaN
- admin
- DarkBars
- admin
- DarkBars
- admin
- 310
- DarkBars
- Alex21021
- admin
Настраиваемые поля virtuemart 3: строка (часть 1)
Настраиваемые поля значительно расширяют стандартные возможности virtuemart.
С их помощью можно добавить к товарам различные свойства, настроить учет остатков, организовать фильтрацию, вывести любую дополнительную информацию о товаре.
В этой статье рассмотрим настраиваемое поле с типом Строка, а так же на конкретных примерах покажем как его можно использовать.
Поле с типом Строка наиболее универсальное. С его помощью можно решить множество задач (показ дополнительных атрибутов товара; назначение свойств, влияющих на конечную стоимость и т.д.). На примере этого поля так же рассмотрим общие настройки, касающиеся всех остальных полей.
Создание настраиваемого поля и вывод его в товаре
Прежде чем переходить к конкретным примерам, рассмотрим общие вопросы.
Создать новое настраиваемое поле можно в Virtuemart > Товары > Настраиваемые поля.
При создании нужно обязательно указать Тип поля и Заголовок. Остальные настройки рассмотрим на конкретных примерах.
Вывести поле в товаре можно выбрав его из списка во вкладке Настраиваемые поля.
Подробнее про настройку позиции вывода настраиваемых полей в карточке товара можно прочитать в этой статье.
Вывод произвольного атрибута
Этот способ подойдет для вывода любой дополнительной информации о товаре, например, сроках доставки, гарантии и т.д.
Создадим новое настраиваемое поле с настройки, как на скриншоте.
Выбран тип поля, указан заголовок и позиция вывода поля (подробнее про настройку позиций). Остальные настройки оставлены по умолчанию.
При добавлении поля к товару в окне вручную укажем нужный текст.
В итоге в карточке товара получим следующее.
Вывод произвольного атрибута из готового списка
Чтобы не заполнять поле вручную, можно добавить все возможные варианты и выбирать из них при добавлении поля к товару.
Для этого в настройках в поле Значение по умолчанию через точку с запятой укажем несколько вариантов и в поле Список выберем параметр Да.
После этого в товаре можно будет выбрать атрибут из готового списка.
В карточке товара результат будет тот же, что и в первом примере с выводом произвольного атрибута.
Добавление атрибута в корзину
Чтобы при добавлении товара в корзину вместе с ним добавился атрибут, который никак не влияет на конечную стоимость товара, в настройках поля активируем первый параметр Атрибут корзины.
В итоге при оформлении заказа в корзине отобразится так же атрибут товара.
Вывод свойств товара, влияющих на конечную стоимость
Способ ниже подойдет, к примеру, если нужно организовать на сайте выбор размера одежды или обуви, причем разные размеры могут отличаться по цене.
Создадим новое настраиваемое поле со следующими настройками.
Настройки те же, что и в первом примере, за исключением того, что активированы оба чекбокса Атрибут корзины. Первый отвечает за передачу данных поля в корзину, а второй позволяет при добавлении поля к товару задавать стоимость параметра.
После создания поля добавим его несколько раз к товару, зададим параметры и стоимость каждого параметра.
Важная особенность. В поле цена указывается не абсолютное значение, а разница между базовой и конечной ценой. Т.е. ноутбук из примера с жестким диском на 256 Gb будет на 1000р. дороже, чем базовая версия на 128 Gb.
Допустим так же знак «-» перед ценой для задания скидки.
Для добавления в админ панели параметров из готового списка изменим настройки настраиваемого поля на следующие.
После этого в карточке товара можно будет выбирать параметры из готового списка, а не указывать каждый раз вручную.
В карточке товара получим следующее.
При выборе разных параметров динамически меняется стоимость товара.
При задании для параметра нулевой цены выводится надпись Без дополнительного сбора. Удалить ее можно в файле /language/ru-RU/ru-RU.com_virtuemart.ini в строке
Рассмотрим оставшиеся настройки.
Текст, введенный в настройках в поле Описание, выводится сразу после настраиваемого поля на странице товара.
В поле Всплывающая подсказка задается текст, который будет показ при наведении на информационную иконку рядом с названием поля в карточке товара.
Опция Add automatically an empty option позволяет автоматически добавить пустую строку для выпадающего списка параметров в карточке товара.
Опция as radiolist позволяет вместо выпадающего списка вывести параметры с радио кнопками.
Чтобы скрыть стоимость дополнительной опции в файле /administrator/components/com_virtuemart/models/customfields.php закомментируйте
Кнопка Купить с внешней ссылкой
Эта тема на форуме поможет если virtuemart используется в качестве каталога и кнопка Купить должна вести не на корзину, а на сторонний сайт.
В следующей статье рассмотрим поле с типом Изображение.
Похожие статьи :
282 комментария
Сергей
День добрый, после прочтения статьи появился вопрос о том как можно применить «поле гарантия» ко всем товарам? Есть CSVI PRO.
stylus83
У меня есть размеры разные, у каждого размера своя цена, можно ли как-то к каждому размеру добавлять свой артикул?
admin
Михаил
Подскажите пожалуйста, при выборе типа поля строка с доп. оплатой за св-ва, т.е. размер: 1.50 +0 1.55 +20 к примеру, если создавать через админку то все в порядке выставляется сортировка значений в нужном порядке, если загружать через CSVI или Exel like manager, в карточке товара они появляются в разнобой, подскажите, как мне соблюсти иерархию 1,50 1,55, 1,60 и т.д. Так бы делал ручками в админке, но это очень не удобно т.к. свойств таких 40 а товаров в которых они однотипные примерно 1000 шт. Подскажите пожалуйста как решить данную задачу, заранее спасибо!
admin
Думаю, что свойства отображаются в том порядке, в котором загружаются на сайт.
Попробуйте отсортировать их в exel файле и заново загрузить.
Михаил
Именно так и делал, не помогло! Но что самое интересно, после обновления страницы они меняются выбранные по умолчанию!
admin
C импортом плотно не работал, поэтому не смогу подсказать точного решения.
Попробуйте обратиться к авторам компонентов, возможно они смогут помочь.
Михаил
Если кому интересно то я решил данную проблему, по крайней мере мне помогло!
В файле /administrator/components/com_virtuemart/models/customfields.php
Надо закомментировать две строки
admin
Рий
Здравствуйте!
В статье «Продажа товара разных размеров в virtuemart 2» вы описывали как отредактировать кусок кода, который отвечает за вывод настраиваемого поля «Атрибут корзины» так, чтобы список с размерами приобрел гораздо более понятный и привычный вид. Т.е. без + перед суммой, а сразу с отображением полной стоимости для каждого размера.
Скажите пожалуйста, как это же проделать для VM3?
Строки кода в файле customfields.php для VM3 отличаются от VM2
Рий
Нашел такое решение:
в administrator\components\com_virtuemart\helpers\calculationh.php
находим строчку
Теперь VM будет отображать не разницу между базовой и конечной ценой, а именно абсолютное значение.
Т.е., при добавлении полей с размерами указываем:
В первом, для 128 ГБ указываем — 39990 руб
Во втором, для 256 ГБ укзываем — 40990 руб
И так далее. Осталось только убрать/заменить знак «+» перед стоимостью.
Сделать это можно в файле customfields.php
Ищем строчки:
$price = strip_tags ( $currency -> priceDisplay ( $calculator -> calculateCustomPriceWithTax ( $customPrice ) ) ) ;
Вместо знака «+» вписываем свое значение. Я например вписал » — » В итоге, получаем отображение вида:
128 Gb — 39990 руб
256 Gb — 49900 руб На мой взгляд так намного удобней.
При добавлении товаров с несколькими размерами нет необходимости производить арифметические действия — сразу вписываем цены из прайса.
Да и для клиентов такое отображение будет намного понятней.
admin
стас
принцип прикольный, но таким образом не работает калькулятор — при выборе двух и более штук товара ценник не меняется, к основной цене не складывается
Татьяна
Татьяна
сама нашла) для плагина customfieldsforall убрать плюс — plugins/vmcustom/customfieldsforall/customfieldsforall/tmpl
button.php (или другой смотря что выбрано)
if($custom_price>=0)$op=’+’;
admin
vmven
Сделать это можно в файле customfields.php
Ищем строчки: static function _getCustomPrice($customPrice, $currency, $calculator) if ((float)$customPrice) $price = strip_tags ($currency->priceDisplay ($calculator->calculateCustomPriceWithTax ($customPrice)));
if ($customPrice >0) $price =»+».$price;
>
> нет такого кода в файле. )
admin
vmven
admin
spro1
$price = strip_tags ( $currency -> priceDisplay ( $calculator -> calculateCustomPriceWithTax ( $customPrice ) ) ) ;
Мне надо было оставить только значение без цены
например вместо:
128 Gb — 39990 руб
256 Gb — 49900 руб
получить:
128 Gb
256 Gb
Для этого в файле /templates/мой шаблон/html/com_virtuemart/sublayouts/customfield.php
закомментировал строку
$price = VirtueMartModelCustomfields:: renderCustomfieldPrice ( $productCustom , $product , $calculator ) ;
admin
Попробуйте в файле /administrator/components/com_virtuemart/models/customfields.php закомментировать
admin
Для замены символа ‘+’ в vm 3.6.8 и выше в файле /administrator/components/com_virtuemart/models/customfields.php внутри метода renderCustomfieldPrice перед
Рий
Здравствуйте!
Когда я выбираю опцию as radiolist для размеров, в карточке товара радио кнопки отображаются со смещением в лево (margin-left: -20px;)
Подскажите, где это исправить?
admin
BHy4eK
admin
Рий
Здравствуйте!
Скажите пожалуйста, как сделать чтобы заданные параметры были обязательными и без их выбора, товар нельзя было добавить в корзину?
При этом, если покупатель их не выбрал и нажал «Добавить в корзину», выводилась красным цветом соответствующая надпись? К примеру:
Пожалуйста выберите размер!
Человек
admin
Можно сделать так, чтобы по умолчанию уже был выбран первый вариант.
Например, как для радиокнопок с изображениями
https://virtuemart.su/custom-fields-virtuemart-3-part-2/#comment-29217
DaN
Добрый день.
Подскажите как поменять порядок отображения доп. полей?
сейчас выводится:
в
а
б
нужно:
а
б
в
admin
DarkBars
А можно ли сделать такую системную замену, чтобы не перелопачивать 100 товаров, изменяя порядок параметров в каждом отдельном товаре?
admin
DarkBars
Нашел решение через phphmyadmin. (Перед тем как делать обязательно делайте дамп БД или на тестовой БД). 1. Как предлагал товарищ 310 в БД через phpmyadmin в таблице virtuemart_customs поменять virtuemart_customs_id в нужном порядке.
* Это изменит соответствие id названию и настройкам поля, но значения полей останутся прежними. 2. Затем производим аналогичную смену поля virtuemart_customs_id в таблице virtuemart_product_custom_plg_param_values.
* Это изменит привязку значений поля, чтобы они соответствовали измененным id.
**Если значений много, то можно использовать SQL запрос UPDATE cfpn8_virtuemart_product_custom_plg_param_values SET virtuemart_custom_id =101 WHERE virtuemart_custom_id =1;
UPDATE cfpn8_virtuemart_product_custom_plg_param_values SET virtuemart_custom_id =1 WHERE virtuemart_custom_id =2;
UPDATE cfpn8_virtuemart_product_custom_plg_param_values SET virtuemart_custom_id =2 WHERE virtuemart_custom_id =101; где 1 и 2 изменяемые id, а 101 — неиспользуемый id, для буфера (чтобы после первой замены все значения не смешались). 3. Далее еще одна аналогичная замена поля virtuemart_customs_id в таблице virtuemart_product_custom_plg_param_ref.
* Это поправит съехавшие значения в параметрах самих товаров
** Здесь также можно воспользоваться SQL запросом указанным выше, только сменив имя таблицы.
admin
310
DarkBars
Попробовал как вы предложили, в итоге заменились только названия. То есть было первое поле «Ток» и второе поле «Напряжение», и до замены «Ток — 1А; Напряжение 12В» после замены id в phpmyadmin получилось, что написано «Напряжение 1А; Ток — 12В»
Alex21021
Коллеги, а можно ли совсем убрать отображаемые дополнительные цены? Чтобы происходила замена только в основном поле, а в выпадающем меню-только характеристика: в Вашем примере это 128 и 256 Гб?
admin
В конец файла /components/com_virtuemart/views/productdetails/tmpl/default.php (либо в папке с шаблоном /templates/имя_шаблона/html/com_virtuemart/productdetails/default.php) добавьте