Привет всем!
Выдалось немножко времени и я решил поделиться новенькой и полезной “плюшкой” для 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 товара, данный плагин можно скачать тут. После установки выставил настройки, которые мне нужны, а именно название товара, картинку, кнопку “В корзину” и активировал плагин.
После этого создал модули в позициях, указал нужные товары и опубликовал модули, в итоге – задача выполнена, заказчик доволен
Если будут вопросы, задавайте с радостью помогу!
А вставка кнопки купить производится каким образом не подскажете?
Очень был бы благодарен)
может подскажете как вывести товары в статью Joomla? Мне надо определённые товары публиковать в материалах, чтобы была картинка товара, название, описание, цена и кнопка купить.
Елена, добрый день. Конечно можно. Качаете плагин, который у меня описан в статье. Создаете модуль с произвольной позицией, к примеру «product-in-article». Указываете id с помощью плагина, далее активируете и сохраняете модуль. После этого в статье используете вот такую конструкцию {loadposition product-in-article} и в статье выводится модуль с выбранными Вами товарами из модуля «product-in-article»