Здравствуйте, уважаемые знатоки VirtueMart. Ломаю себе голову как сделать такой вариант: если товар уже есть в корзине, то в карточке товара изменить внешний вид кнопки "Добавить в корзину" или вообще не выводить кнопку эту кнопку. Подскажите пожалуйста как сделать такую проверку на странице товара. Заранее огромное спасибо.
VirtueMart 2.0.20b
Решение:Как оказалось все очень просто.
1. В файле
/components/com_virtuemart/views/productdetails/tmpl/default.php после
defined('_JEXEC') or die('Restricted access');
вставляем
if(!class_exists('VirtueMartCart')) require(JPATH_VM_SITE.DS.'helpers'.DS.'cart.php');
$cartProducts = VirtueMartCart::getCart(false)->products;
foreach($cartProducts as $cartProduct){
$inCart = ($cartProduct->virtuemart_product_id==$this->product->virtuemart_product_id);
if ($inCart) break;
}
Если класс 'VirtueMartCart' не определен, то подключаем хелпер 'cart.php'. Потом получаем массив продуктов которые есть в корзине. Проверяем совпадение ID нашего продукта с ID продуктов из корзины, если есть совпадение останавливаем цикл.
2. Мне для оформления кнопки достаточно было поменять ее стиль, т.к. надпись кнопки на картинке фона, а не в input'е. Поэтому в файле
/components/com_virtuemart/views/productdetails/tmpl/default.php вот это:
<?php
// Add To Cart Button
// if (!empty($this->product->prices) and !empty($this->product->images[0]) and $this->product->images[0]->file_is_downloadable==0 ) {
//if (!VmConfig::get('use_as_catalog', 0) and !empty($this->product->prices['salesPrice'])) {
echo $this->loadTemplate('addtocart');
//} // Add To Cart Button END
?>
я завернул в <div> и в классе сделал проверку если было совпадение ID то пишем этому диву класс, вот что получилось:
<div class="<? if($inCart){echo "in_cart";} ?>">
<?php echo $this->loadTemplate('addtocart');?>
</div>
3. Осталось только оформить в CSS кнопку внутри div'а .in_cart.
Вот и все решение этой загагулины.
Будут вопросы спрашивайте, постараюсь ответить.
Большое спасибо
Fedor Vlasenko за упрощение данного решения.