Печать

Переменные шаблона Virtuemart

Очень часто при создании интернет магазина с использованием 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\

Добавить комментарий


Защитный код
Обновить