Очень часто при создании интернет магазина с использованием CMS Joomla и компонента Virtuemart приходится менять расположение мест где выводится информация о товаре, о производителе и т.д. Бывает что нужно просто убрать некоторые поля, или добавить что то . Изменения необходимо делать на двух страницах, первое - это вывод всех товаров категории и вторая - это страница товара. Переменных, используемых в Virtuemart много и поэтому мы решили свести их в единую таблицу.
Переменные которые можно вывести в карточке товара.
Название товара
<?php echo $this ->product->product_name ?>
Артикул
<?php echo $this ->product->product_sku ?>
Ссылка задать вопрос по этому товару
<a class="ask-a-question" href="/<?php echo $url ?>"><?php echo JText::_('COM_VIRTUEMART_PRODUCT_ENQUIRY_LBL') ?></a>
Краткое описание
<?php echo $this->product->product_s_desc ?>
Подробное описание
<?php echo $this->product->product_desc ?>
Основное изображение
<?php echo $this->product->images[0]->displayMediaFull('class="product-image"',false) ?>
Дополнительные изображения
<?php
if(!empty($this->product->images) && count($this->product->images)>1) {
foreach ($this->product->images as $image) {
echo $image->displayMediaThumb('class="product-image"',true,'class="modal"'); //'class="modal"'
}
}
?>
Доступность товара (текст)
<?php echo $this->product->product_availability; ?>
Доступность товара (изображение)
<?php echo JHTML::image(JURI::root().VmConfig::get('assets_general_path').'images/availability/'.$this->product->product_availability, $this->product->product_availability, array('class' => 'availability')); ?>
Минимальное количество для заказа
<?php echo $this->product->min_order_level ?>
Максимальное количество для заказа
<?php echo $this->product->max_order_level ?>
Единица измерения товара
<?php echo $this->product->product_unit ?>
Вес
<?php echo $this->product->product_weight ?>
Единица измерения веса
<?php echo $this->product->product_weight_uom ?>
Высота
<?php echo $this->product->product_length ?>
Ширина
<?php echo $this->product->product_width ?>
Высота
<?php echo $this->product->product_height ?>
URL товара
<?php echo $this->product->product_url ?>
Наличие
<?php echo $this->product->product_in_stock ?>
Можно также вывести мотивирующею надпись, если количество товаров, например меньше 10:
<?php if ($this->product->product_in_stock <= 10) { ?>
<div>Осталось <?php echo $this->product->product_in_stock ?> штук в наличии. Спешите!</div>
<?php }?>
Дата поступления товара
<?php echo $this->product->product_available_date ?>
Рекомендуемый товар (1 или 0)
<?php echo $this->product->product_special ?>, например можно отобразить так:
<?php if ($this->product->product_special == 1) { ?>
<div>Рекомендуем!</div>
<?php}?>
Упаковка
<?php echo $this->product->product_packaging ?>
Ссылка вернуться в категорию товара
$catturl = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.JRequest::getInt('virtuemart_category_id',0));
<a href="/<?php echo $catturl ?>"><?php echo $this->category->category_name ?></a>
Производитель
<?php echo $this->product->mf_name ?>
Количество в упаковке
$this->product->product_box
| Имя переменной | Описание |
| product_lwh_uom | единица измерения габаритов |
| product_flypage | |
| cdate | дата добавления товара |
| mdate | дата последний правки товара |
| product_availability | в наличии |
| product_price |
цена |
| form_addtocart | кнопка «Добавить в корзину» |
| product_rating | рейтинг товара |
| product_details | подробнее |
| product_full_image | большая картинка товара |
| product_thumb_image | мини-изображение товара |
| files | список всех прикрепленных файлов |
| buttons_header | кнопи: PDF, Email и Печать |
| browsepage_header | заголовок и описание Категории |
| parameter_form | параметры формы поиска |
| orderby_form | сортировка товара и навигация |
| navigation_pathway | путь навигации |
| navigation_childlist | дочерние категории данной категории |
| browsepage_footer | навигации категории и количество страниц |
Flypage это карточка товара, страница отображает свойства и характеристики конкретного (одного) товара. Файлы для изменений расположены в папке ...components/com_virtuemart/themes/default/templates/product_details/
| Имя переменной | Описание |
| product_name | название товара |
| product_sku | артикул |
| product_s_desc | короткое описание |
| product_description | полное описание |
| product_weight_uom | единица измерения веса |
| product_length | длина товара |
| product_height | высота товара |
| product_width | ширина |
| product_lwh_uom | единица измерения габаритов |
| product_url | ссылка на товар |
| product_in_stock | количество товаров на складе |
| product_available_date | дата появления |
| product_special | специальное предложение (Да или Нет) |
| product_discount_id | id скидки |
| cdate | дата добавления товара |
| mdate | дата последний правки товара |
| product_sales | количество продаж |
| product_unit | единица измерения упаковки (коробка, упаковка, комплект и т.п.) |
| product_packaging | количество товаров в упаковке. |
| product_price_lbl | надпись: «Цена (или стоимость)» |
| product_price | цена |
| addtocart | кнопка «Добавить в корзину» |
| product_type | тип товара |
| product_reviews | отзывы (Комментарии) |
| product_reviewform | форма для написания комментария |
| product_image | изображение товара |
| product_full_image | большая картинка товара |
| product_thumb_image | мини-изображение товара |
| buttons_header | кнопи: PDF, Email и Печать |
| navigation_pathway | путь навигации (Где находимся?) |
| more_images | дополнительные изображения |
| manufacturer_link | производитель |
| vendor_link | продавец |
| edit_link | ссылка на редактирование товара (отображается только для Администраторов ) |
| ask_seller | ссылка задать вопрос по товару |
| related_products | родственный товар |
| navigation_childlist | навигация от категории |
| images | список дополнительных изображений |
| files | список всех прикрепленных файлов |
Ниже речь пойдёт только о тех полях, которые присущи только категории товаров:
Название категории
<?php echo $this->category->category_name; ?>
Описание категории
<?php echo $this->category->category_description ; ?>
Краткое описание
<?php echo shopFunctionsF::limitStringByWord($product->product_s_desc, 40, '...') ?>
Где 40 — это максимальное количество символов, после чего текст обрезается. Если нужно вывести весь текст краткого описания, можете использовать:
<?php echo $product->product_s_desc ?>
Название товара с ссылкой на сам товар
<?php echo JHTML::link($product->link, $product->product_name) ?>
Ссылка «Подробнее» для товаров
<?php echo JHTML::link($product->link, JText::_('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => $product->product_name,'class' =>
'product-details'));?>
Вывод сортировки
<?php echo $this->orderByList['orderby']; ?>
Выпадающий список производителей
<?php echo $this->orderByList['manufacturer']; ?>
Количество показных товаров/Выбор количества товаров/Постраничная навигация
<?php echo $this->vmPagination->getResultsCounter();?> <?php echo $this->vmPagination->getLimitBox(); ?> <?php echo $this->vmPagination->getPagesLinks(); ?> <?php echo $this->vmPagination->getPagesCounter(); ?>
Изображение товара (при клике всплывающее окно)
<?php echo $product->images[0]->displayMediaThumb('class="browseProductImage" border="0" title="'.$product->product_name.'"
',true,'class="modal"'); ?>
Изображение товара (при клике переход на карточку товара)
<?php echo JHTML::_('link', JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$product->virtuemart_product_id.'&virtuemart_category_id='.$product->virtuemart_category_id),$product->images[0]->displayMediaThumb('class="catImage" border="0"',false));
Уровень наличия на складе
<?php echo $product->stock->stock_level ?>
Или как я говорил раньше, Вы можете использовать любые поля самого товара и отобразить например абсолютное значения остатков так:
<?php echo $product->product_in_stock ?>
Вывод различных цен на товар
Для карточки товара:
<?php echo $this->product->prices['salesPrice']; ?>
Для категории товаров используем конструкцию:
<?php echo $product->prices['salesPrice']; ?>
Где вместо salesPrice, может быть любая другая переменная цены:
- salesPrice — окончательная цена
- costPrice — себестоимость
- basePrice — фактическая цена
- basePriceVariant — основная цена преобразованная в валюту магазина. Цена в зависимости от комбинации товаров.
- salesPriceTemp — модификатор базовой цены, который используется только в связке с JS, для её обновления.
- discountAmount — сумма скидки
- priceWithoutTax — Фактическая цена без налога
- DBTax — цена с налогом
- Tax — сумма налога
- VatTax — НДС
- DATax — цена после уплаты налогов
Поля в корзине и их модификации для Virtuemart 2/3
Вывод информации при отсутствии платёжного адреса:
<?php if (empty($this->cart->BT)){ ?> Не указан адрес плательщика<?php }?>
Вывод информации если платёжный адрес заполнен:
<?php if (!empty($this->cart->BT)){ ?> Адрес плательщика указан <?php }?>
Вывод информации если не выбрал способ оплаты:
<?php if ($this->cart->cartData['paymentName'] == 'Не выбран способ оплаты') {?> Не выбран способ оплаты<?php }?>
Изменение стандартных надписей (Добавить адрес плательщика, редактировать адрес плательщика):
<?php if (empty($this->cart->BT)){ ?>
<a class="details bold font14 m4" href="/<?php echo JRoute::_('index.php?option=com_virtuemart&view=user&task=editaddresscart&addrtype=BT',$this->useXHTML,$this->useSSL) ?>">
Добавить платёжный адрес
</a> <?php } ?>
<?php if (!empty($this->cart->BT)){ ?>
<a class="details bold font14 m4" href="/<?php echo JRoute::_('index.php?option=com_virtuemart&view=user&task=editaddresscart&addrtype=BT',$this->useXHTML,$this->useSSL) ?>">
Редактировать платёжный адрес
</a> <?php } ?>
Отображение ссылки «Адрес доставки отличается от адреса плательщика»?
<?php if ((!empty($this->cart->BT)) && (empty($this->cart->ST))){ ?>
<a class="details bold font14 m4" href="/<?php echo JRoute::_('index.php?option=com_virtuemart&view=user&task=editaddresscart&addrtype=ST&virtuemart_user_id[]='.$this->cart->lists['current_id'],$this->useXHTML,$this->useSSL) ?>">
Адрес доставки отличается от платёжного? </a><?php } ?>
Вывод ссылки изменить адрес доставки:
<?php if(!empty($this->cart->STaddress['fields'])){ ?>
<a class="details bold font14 m4" href="/<?php echo JRoute::_('index.php?option=com_virtuemart&view=user&task=editaddresscart&addrtype=ST&virtuemart_user_id[]='.$this->cart->lists['current_id'],$this->useXHTML,$this->useSSL) ?>">
Редактировать адрес доставки
</a> <?php }?>
Проверка заполнения всех данных:
<?php if ($this->cart->getDataValidated()){ ?> Когда всё заполнено <?php }?>
или
<?php if (!$this->cart->getDataValidated()){ ?> Когда что-то отсутствует <?php }?>
Проверка платёжного адреса и адреса доставки:
<?php if ($this->cart->ST==$this->cart->BT) { ?> Когда они совпадают <?php } ?>
или
<?php if ($this->cart->ST!=$this->cart->BT) { ?> Когда они не совпадают <?php } ?>
Остальное легко понять и найти в файле \templates\your template\html\com_virtuemart\cart\