Шпаргалка. Вывод информации на странице категории Virtuemart 2/3

logo-vmВ продолжение вчерашней статьи, выкладываю очередную шпаргалку по полям, которые на этот раз можно вывести в категории товаров. Такими темпами, в ближайшем будущем можно будет написать полноценную статью по созданию шаблона для Virtuemart, но пока довольствуемся тем, что есть.В целом, набор полей которые можно вывести в категории мало чем отличается от тех, что можно вывести в карточке товара, отличается лишь вызов этой информации, если в товаре мы используем $this->product, то в категории $product->. Так, что если Вам нужно вывести информацию о товаре в категории, читаем эту статью и и меняем $this->product на $product->.

Ниже речь пойдёт только о тех полях, которые присущи только категории товаров:

Название категории

<?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 ?>

 


Комментариев: 7 на Шпаргалка. Вывод информации на странице категории Virtuemart 2/3

Хорошая информация, спасибо!
Подскажите, как можно присвоить вычисленное значение доп.полям, и количеству. С последующим сохранением.
Поясню. В категории с товарами планируется написать калькулятор, в каждой строке с товаром есть поля для исходных данных и кнопка «рассчитать». Результатом расчета должны быть настраевыемые доп. поля и нужное кол-во этого товара. Все результаты расчета нужно увидеть и в карточке товара, если туда перейти. Вот как сохранить результаты расчета в товаре?

Роман, подскажи, возник такой вопрос: в настройках внешнего вида Virtuemart 3, можно поменять количество категорий и товаров в строке. Количество товаров меняется, а количиство выводимых категорий нет. Всегда отстается 3. Что делать?

Ну я так понимаю, это проблема непосредственно шаблона, так как в стандартном шаблоне эти параметры меняются.
/components/com_virtuemart/sublayouts/categories.php (для последних версий), 3 задано по-умолчанию:

$categories_per_row = VmConfig::get ( ‘categories_per_row’, 3 );

Но данные тянутся из конфигурации, по-этому скорее всего, проблема не в том, что 3 не меняется например на 4, а в том, что эти настройки вообще не используются в шаблоне.

Спасибо,
Немного подробней. Установил последнюю версию joomla, шаблон по умолчанию — protostar, установил virtuemart, скопировал в ../templates/protostar/html/com_virtuemart/sublayouts/ файл categories.php, изменил строку:
$categories_per_row = !empty($viewData[‘categories_per_row’])? $viewData[‘categories_per_row’]:VmConfig::get ( ‘categories_per_row’, 4 );
if(empty($categories_per_row)) $categories_per_row = 4;
Все равно выдает 3 категории в строке.
Тупо после этой строки вставил:
$categories_per_row = 4;
Выдало, как положено 4 категории в строке.
Я не силен в програмировании, подскажи, что не так?

Посмотрел последний Virtuemart, файл categories.php отличается, от того, что у меня сейчас.
Попробуйте заменить это:

$categories = $viewData[‘categories’];

if ($categories) {

$categories_per_row = !empty($viewData[‘categories_per_row’])? $viewData[‘categories_per_row’]:VmConfig::get ( ‘categories_per_row’, 3 );
if(empty($categories_per_row)) $categories_per_row = 3;

на это:

$categories = $viewData[‘categories’];
$categories_per_row = VmConfig::get ( ‘categories_per_row’, 3 );
if ($categories) {

В VM 3.2.2 выводятся товары в самой категории и только одной нижележащей субкатегории, как сделать чтобы выводилось всё? Т.е. до полной глубины?

Комментировать