В этой статье рассмотрим вывод всех параметров, которые задаются в настройках товара во вкладке Габариты/Вес.
По какой причине в virtuemart без правок шаблона нельзя вывести все эти параметры трудно сказать.
Возможно, со временем этот код включат в шаблон, а пока придется вносить правки самостоятельно.
Для карточки товара код нужно добавлять в файл /components/com_virtuemart/views/productdetails/tmpl/default.php либо в тот же файл с папке с шаблоном /templates/имя_шаблона/html/com_virtuemart/productdetails/default.php.
Вес товара
1 2 3 4 5 6 7 8 9 |
<?php if($this->product->product_weight){ ?> <div class="product_weight"> <span class="product-fields-title" > <?php echo JText::_('COM_VIRTUEMART_PRODUCT_WEIGHT').': '; // Заголовок ?> </span> <?php echo round($this->product->product_weight, 0); // Вес товара, 0 - количество знаков после запятой echo $this->product->product_weight_uom; // Единица измерения веса ?> </div> <?php } ?> |
Длина
1 2 3 4 5 6 7 8 9 |
<?php if($this->product->product_length){ ?> <div class="product_length"> <span class="product-fields-title" > <?php echo JText::_('COM_VIRTUEMART_PRODUCT_LENGTH').': '; // Заголовок ?> </span> <?php echo round($this->product->product_length, 0); // Длина товара, 0 - количество знаков после запятой echo $this->product->product_lwh_uom; // Единица измерения длины ?> </div> <?php } ?> |
Ширина
1 2 3 4 5 6 7 8 9 |
<?php if($this->product->product_width){ ?> <div class="product_width"> <span class="product-fields-title" > <?php echo JText::_('COM_VIRTUEMART_PRODUCT_WIDTH').': '; // Заголовок ?> </span> <?php echo round($this->product->product_width, 0); // Ширина товара, 0 - количество знаков после запятой echo $this->product->product_lwh_uom; // Единица измерения ширины ?> </div> <?php } ?> |
Высота
1 2 3 4 5 6 7 8 9 |
<?php if($this->product->product_height){ ?> <div class="product_height"> <span class="product-fields-title" > <?php echo JText::_('COM_VIRTUEMART_PRODUCT_HEIGHT').': '; // Заголовок ?> </span> <?php echo round($this->product->product_height, 0); // Высота товара, 0 - количество знаков после запятой echo $this->product->product_lwh_uom; // Единица измерения высоты ?> </div> <?php } ?> |
Упаковка
1 2 3 4 5 6 7 8 9 |
<?php if($this->product->product_packaging){ ?> <div class="product_packaging"> <span class="product-fields-title" > <?php echo JText::_('COM_VIRTUEMART_PRODUCT_PACKAGING').': '; // Заголовок ?> </span> <?php echo round($this->product->product_packaging, 0); // Вес упаковки, 0 - количество знаков после запятой echo $this->product->product_lwh_uom; // Единица измерения веса ?> </div> <?php } ?> |
Данная информация выводится в карточке товара кодом
1 2 3 4 5 6 7 8 |
$product_packaging = ''; if ($this->product->product_box) { ?> <div class="product-box"> <?php echo vmText::_('COM_VIRTUEMART_PRODUCT_UNITS_IN_BOX') .$this->product->product_box; ?> </div> <?php } // Product Packaging END ?> |
В итоге в карточке товара получится следующее.
Для замены единицы измерения веса на русские символы в файле /administrator/components/com_virtuemart/helpers/shopfunctions.php замените
1 2 3 4 5 6 7 |
return $weigth_unit = array( 'KG' => vmText::_ ('COM_VIRTUEMART_UNIT_NAME_KG') , 'G' => vmText::_ ('COM_VIRTUEMART_UNIT_NAME_G') , 'MG' => vmText::_ ('COM_VIRTUEMART_UNIT_NAME_MG') , 'LB' => vmText::_ ('COM_VIRTUEMART_UNIT_NAME_LB') , 'OZ' => vmText::_ ('COM_VIRTUEMART_UNIT_NAME_ONCE') ); |
на
1 2 3 4 5 6 7 |
return $weigth_unit = array( 'кг' => vmText::_ ('COM_VIRTUEMART_UNIT_NAME_KG') , 'гр' => vmText::_ ('COM_VIRTUEMART_UNIT_NAME_G') , 'мг' => vmText::_ ('COM_VIRTUEMART_UNIT_NAME_MG') , 'LB' => vmText::_ ('COM_VIRTUEMART_UNIT_NAME_LB') , 'OZ' => vmText::_ ('COM_VIRTUEMART_UNIT_NAME_ONCE') ); |
Чтобы при обновлении virtuemart не вносить эти правки заново, можно просто заменить в кода вывода веса
1 |
echo $this->product->product_weight_uom; // Единица измерения веса |
на
1 |
echo 'кг'; // Единица измерения веса |
Надеюсь, что статья окажется полезной.
59 комментариев
Vladislav
Хорошая статья, надо взять на заметку
Александр
А как можно то же самое проделать в списке товаров категории?
admin
Используйте тот же код, только замените в нем
на
kenni
А как реализовать проверку на отсутствие размера. Например если размер не указан (то есть 0) его не выводить, а если отличается от нуля то вывести?
admin
Проверка уже есть.
Если какие-то параметры не заданы, то они просто не выводятся.
Юрий
Добрый день!
Посмотрите пожалуйста, нету ли у вас ошибки в коде "Количество в упаковке"
admin
Здравствуйте!
После вставки кода из статьи перестает работать страница?
Скорее всего из-за тегов php.
Пришлите строку, после которой Вы хотите вставить Количество в упаковке.
Максим
А где поменять подпись "Длина товара" На просто "Длина". менял в ru-ru.com_virtuemart. Не изменяется подпись. остается по прежнему
admin
За вывод подписи отвечает переменная
в файле /language/ru-RU/ru-RU.com_virtuemart.ini
Очистите кеш браузера.
Если не поможет, то, возможно, надпись задана непосредственно в шаблоне.
Andrii
А если у некоторых товаров вес погонного метра, а у остальных вес просто за единицу товара?
Можно выводить разные надписи?
admin
Можно с помощью настраиваемого поля строка добавить информацию, что это вес за м/пог.
Владислав
А куда именно вставлять в файле?, в likeshop не сработал у меня способ, может не правильно код разместил.
admin
Размещать код нужно в файле /templates/t3_bs3_blank/html/com_virtuemart/productdetails/default.php, например, внутри блока
Владислав
То есть получается вот так?
product->product_width){ ?>
product->product_width, 0); // Ширина товара, 0 - количество знаков после запятой
echo $this->product->product_lwh_uom; // Единица измерения ширины ?>
product->product_length){ ?>
product->product_length, 0); // Длина товара, 0 - количество знаков после запятой
echo $this->product->product_lwh_uom; // Единица измерения длины ?>
Просто добавил в конец файла и чё то не робит. Просто я только добавляю ширину и длину.
admin
Пожалуйста, создайте тему на форуме поддержки покупателей шаблона.
Я там обязательно отвечу.
Юрий
Здравствуйте!
Не нашел такой темы на сайте, по этому спрашиваю сюда. Вы уж извините.
Вопрос касается языков магазина. По умолчанию у меня язык магазинов стоит English, все категории соответственно принадлежат этому языку. После в Конфигурации добавил еще два языка.
При выборе языка в категории везде, как и должно быть, появляются флажки выбранного языка, но после нажатия кнопки "сохранить" язык сбрасывается по умолчанию. Случайно не встречалась ли подобная проблема?
Спасибо!
admin
Здравствуйте!
С мультиязычностью почти не работал, поэтому подсказать не смогу.
Разместите тему на форуме, думаю найдутся люди, которые смогут помочь.
Николай
А как вы вывели Артикул???
admin
https://virtuemart.su/forums/topic/vyvod-artikula-v-kartochke-tovara/
foxxxof
А можно ли изменить длину поля, например "Единиц товара в коробке" с15 до 2000 ?
Олег
Огромное спасибо людям создавшим этот ресурс, и тем, кто в нём делится своим опытом! Храни вас Бог!
soundshot
а где можно добавить параметры? продаю бу часы
интересует замена или добавления новых параметров и дальнейший вывод их в карточке товара!
например: Имеется упаковка
Часы: мужские
состояние: АА-АB-AC и так далее
admin
Помогут настраиваемые поля.
Дина
А у меня вот такой вопрос. Мне нужно, чтобы было две единицы измерения: в см и дюймах. В идеале - какой нибудь конвертер. То есть выбираешь см из выпадающего меню , и тебе длина в см. Выбираешь дюймы - держи в дюймах.
admin
Готового решения нет, нужно писать собственное.
В карточке товара можно добавить скрипт, который автоматически будет конвертировать единицы измерения, но вот в корзину будут передаваться данные в одном формате.
В любом случае лучше обратиться на фриланс.
User
Добрый день.
Отличная статья, добавил код (без php) в description.
Возникло 2 вопроса:
1. При значении 0 параметры все равно выводятся, можно ли исправить это?
2. Изменил KG на кг в указанном файле, но значения не поменялись. Где могут еще храниться единицы измерения?
admin
Здравствуйте!
Попробуйте заменить условия вывода значений на
Ruslan
Здравствуйте! Спасибо за данную тему! Все работает! Только вот, вес округляется. Как сделать так, чтобы он указывался точно, например - Вес: 1.23 гр.
И последний вопрос, в этих габаритах, например в упаковке, можно как нибудь добавить вместо чисел произвольный текст?
admin
Здравствуйте!
По весу.
В строке
round($this->product->product_weight, 0)
замените 0 на 2
По упаковке.
Можно добавить только число. Для вывода произвольного текста используйте настраиваемое поле с типом строка.
Andrii
Мне нужно, чтобы вес был в до тысячной доли - 0,150 кг.
В коде ставлю 3,
но вижу лишь - 0,15кг
Понятно, что если вес товара - 0,151кг
то он показывает корректно - 0,151 кг
Короче, не показывается "0" в конце
С этим можно что-то сделать?
admin
Попробуйте заменить
на
Andrii
Безмерно благодарен!
Сергей
Добрый день.
Немного офтоп. Подскажите, существует ли фильтр для VirtueMart, который бы тоже видел поля габаритов?
admin
Здравствуйте!
Не встречал таких. Если найдете, пожалуйста, поделитесь.
Valeriy
Спасибо за вашу работу. Вставил код все работает. У меня вопрос как сделать, чтобы обозначения мм, см и т.д. были написаны маленькими буквами, а то не очень смотрится:
Длина: 1550MM
Ширина: 900MM
Высота: 900MM
Или вообще их удалить.
admin
Попробуйте в коде обернуть вывод единицы измерения в функцию mb_strtolower, которая приводит буквы строки к нижнему регистру.
Т.е. вместо
будет
n73vi
Спасибо. Все работает идеально. Скажите, а можно сделать чтобы габариты выводились в одну строку?
admin
Пришлите ссылку на страницу с проблемой, посмотрим, что можно сделать.
n73vi
Да проблемы никакой нет. Просто сейчас габариты выводятся:
Ширина: 1200 мм
Высота: 800 мм
Глубина: 600 мм
А хотелось бы для экономии места выводить в одну строку:
Ширина: 1200 мм Высота: 800 мм Глубина: 600 мм
admin
Все равно пришлите ссылку на товар, чтобы можно было сразу потестировать css.
Алексей
Здравствуйте, а как сделать в админ панели где строка вес, чтобы после запятой не выводились 4 нуля? Например если я ввожу вес 2, то после сохранения появляется 2.0000 а мне так не надо
admin
Здравствуйте!
Нужно вносить изменения в ядро virtuemart. После обновления все изменения пропадут, поэтому проще округлять эти значения при выводе на сайте. Код для этого есть в статье.
Альфред
Спасибо - очень помогли!!!
Andrii
Как сделать чтобы вес товара изменялся в зависимости от выбранных в настраиваемых полях опций?
Например, товар имеет вас 2 кг,
Дополнительный аксессуар — 0,3 кг
Т.о суммарный вес — 2,03 кг
https://alfagravity.net/demo/index.php/snaryazhenie/trenajer-betta-gravi-combine-detail.html
admin
Стандартными средствами сделать не получится. А как вы планируете добавлять вес в настраиваемые поля аксессуаров?
Николай
Здравствуйте, подскажите как можно вывести количество проданных/купленных товаров, пишут что есть заглушка $product_sales, но что с ней делать ума не хватает.
admin
Здравствуйте!
Посмотрите в этой статье.
Кристина
Спасибо за статью, все работает.
Только одно но: вес округляется, например нужно 1,3 кг (пишу в админке 1.3000), а Вирт округляет до 1. Если 1,7 кг, то до 2 кг.
Убила час, не могу понять
Помогите, пожалуйста
admin
Замените
на
Кристина
Спасибо огромнейшее!!! Все заработало!
Еще вопрос (стыдно спрашивать, но нужно): можно ли реализовать вывод длины и ширины таким образом: "Размеры: 40*50" (можно с сантиметрами, можно без)?
admin
Попробуйте этот код
kirill.psl
такого файла нет - /administrator/components/com_virtuemart/helpers/shopfunctions.php
прописал в ru-RU.com_virtuemart.ini
COM_VIRTUEMART_UNIT_SYMBOL_KG="кг"
COM_VIRTUEMART_UNIT_NAME_KG="Килограмм"
все равно KG по английски написано...
где еще найти? вывод делаю так - $product->product_weight_uom;
kirill.psl
у меня к сожалению вес бывает трех переменных... КГ, Г, Л
admin
Единица измерения выводится в карточке товара?
Если да, то используйте код
Файл /administrator/components/com_virtuemart/helpers/shopfunctions.php должен быть, какая версия virtuemart на сайте?
kirill.psl
вывожу именно так -
если написать
- ругается на this
admin
Нужно смотреть на сайте, удаленно трудно сказать.
Попробуйте обратиться на фриланс.
kirill.psl
Using $this when not in object context
kirill.psl
VirtueMart 3.6.10 10211
shopfunctions.php - нашел... смотрел не в administrator...
Но все равно не помогло, мне нужно и в карточке товаров добавить и на странице категории :
https://yadi.sk/d/kzM5JKzT574bTA
https://yadi.sk/d/HplVhI6S4AtX0g
в карточке вообще почему-то вес не показывается..
kirill.psl
Ох сколько времени ушло на то чтобы понять в чем дело... а дело было в том что после того как поправили файл на русский - /administrator/components/com_virtuemart/helpers/shopfunctions.php
нужно заново указывать единицу веса в товаре, ну или можно просто пересохранить товар, я думал что после того как поменять единицу веса в файле, на всех старых товарах она изменится... может можно как-то массово пересоздать товары? у меня почти 1000 позиций...