Привет всем!

Выдалось немножко времени и я решил поделиться новенькой и полезной “плюшкой” для virtuemart 3.

Как часто Вы хотели вывести товар по id в virtuemart 3 и у Вас это не получалось. В моем предыдущем проекте была поставлена интересная задачка – сделать вывод в определенной категории, определенных товаров с некой разбивкой, а именно:

Есть 12 товаров в категории, нужно первоначально вывести заголовок, описание категории, далее вывести 4 товара, далее небольшое текстовое отступление, и снова товары.

Как мы знаем товары в категории virtuemart 3 формируются массивом, который выглядит вот так

<?php
	if (!empty($this->products)) {
	$products = array();
	$products[0] = $this->products;
	echo shopFunctionsF::renderVmSubLayout($this->productsLayout,array('products'=>$products,'currency'=>$this->currency,'products_per_row'=>$this->perRow));

?>

Люди, знающие php, сразу бы сказали, а почему бы не вытащить нужные значения из массива и не сделать все в одном файле, но для обычных пользователей это был бы крах, так как править приходилось бы всегда через файловый менеджер или через панель хостинга, что не есть гуд.

Поэтому я начал думать, как можно облегчить труд, первоначально создал новый файлик в папке \templates\шаблон\html\com_virtuemart\category\, назвал его “new-shablon.php”, далее сделал самое простое разбил шаблон на 4 составляющие:

  • H1 и описание категории вынес наверх
  • Убрал вывод товаров из категории
  • Создал новую позицию для модуля где должно быть 2 товара
  • Создал новую позицию для модуля где должно быть текстовая часть + оставшиеся товары

Чтобы создать позицию для модуля в virtuemart 3 можно использовать несколько подходов

  • Через главный файл шаблона
  • <?php $viewCatId = JRequest::getVar('virtuemart_category_id', null);
    if ($viewCatId == "id категории" ){?>      
           <jdoc:include type="modules" name="ваша позиция модуля" style="xhtml" /><?php } ?>
    
  • Через сам virtuemart 3
  • <?php 
    	jimport( 'joomla.application.module.helper' ); 
    	$modules = JModuleHelper::getModules( ' ваша позиция модуля ');  
    	$attribs['style'] = 'xhtml'; 
    	foreach($modules as $module){ 
    	echo JModuleHelper::renderModule($module, $attribs); 
    	} 
    	?> 
    

По мне было удобнее сделать это через virtuemart 3, через созданный файл, чтобы было все в едином месте.

 

Далее сделал небольшой хак, чтобы можно было выводить по шорт коду id товара, данный плагин можно скачать тут. После установки выставил настройки, которые мне нужны, а именно название товара, картинку, кнопку “В корзину” и активировал плагин.

 

После этого создал модули в позициях, указал нужные товары и опубликовал модули, в итоге – задача выполнена, заказчик доволен

 

id-virtuemart3

Если будут вопросы, задавайте с радостью помогу!

3 Responses to “Вывести товар по id в virtuemart 3”

  1. Николай, Ответить

    А вставка кнопки купить производится каким образом не подскажете?
    Очень был бы благодарен)

  2. Лена, Ответить

    может подскажете как вывести товары в статью Joomla? Мне надо определённые товары публиковать в материалах, чтобы была картинка товара, название, описание, цена и кнопка купить.

    • admin, Ответить

      Елена, добрый день. Конечно можно. Качаете плагин, который у меня описан в статье. Создаете модуль с произвольной позицией, к примеру «product-in-article». Указываете id с помощью плагина, далее активируете и сохраняете модуль. После этого в статье используете вот такую конструкцию {loadposition product-in-article} и в статье выводится модуль с выбранными Вами товарами из модуля «product-in-article»

Оставить ответ на Лена

Нажмите, чтобы отменить ответ.