VM 2.x Кнопка купить на странице категории товара

Аналогичная ситуация - не работает "Уведомить меня" с этими вариантами - немного порылся и нашел такой вариант:

1) В папку ваш сайт/templates/ваш шаблон/html/com_virtuemart/category
скопировать файл default_addtocart.php из папки
ваш сайт/components/com_virtuemart/views/productdetails/tmpl
2) Открыть файл default.php из папки
ваш сайт/templates/ваш шаблон/html/com_virtuemart/category
и добавить пару строк в удобное место (где предполагаете вывести кнопку) :
PHP:
<?php
    $this->product = $product;
    echo $this->loadTemplate('addtocart');
?>

Все...))) Пробуйте, тестируйте...
Главное, что появляется "Уведомить меня" при отсутствии товара, если в админке установлена соответствующая "галка"

P.S. если понравилось, то "+ " не забывайте ставить)))

Вставил данный код, итог - "500 - Макет default_addtocart не найден". В чем подвох?
 
Делал не много по другому кому интересно попробуйте! Решение без выбора количества товара!

Вставляем сюда
/public_html/components/com_virtuemart/views/category/tmpl/default.php либо
public_html/templates/Ваш шаблон/html/com_virtuemart/category/default.php


После echo $this->currency->createPriceDiv('taxAmount','COM_VIRTUEMART_PRODUCT_TAX_AMOUNT',$product->prices);
} ?></div>
</td>

Измененный код


Код:
<td><form method="post" class="product" action="index.php" >
 
<?php // Display the quantity box
 
$stockhandle = VmConfig::get('stockhandle', 'none');
if (($stockhandle == 'disableit' or $stockhandle == 'disableadd') and ($product->product_in_stock - $product->product_ordered) < 1) {
?>
 
<?php } else { ?>
<!-- <label for="quantity<?php echo $product->virtuemart_product_id; ?>" class="quantity_box"><?php echo JText::_('COM_VIRTUEMART_CART_QUANTITY'); ?>: </label> -->
<span class="quantity-box" style="display:none">
<input type="text" class="quantity-input js-recalculate" name="quantity[]" value="<?php if (isset($product->min_order_level) && (int) $product->min_order_level > 0) {
echo $product->min_order_level;
} else {
echo '1';
} ?>" />
</span>
 
<?php // Display the quantity box END ?>
 
<div align="center"><?php
// Display the add to cart button
?>
<span class="addtocart-button">
<span class="">
<div align="center"><input type="submit" name="addtocart" class="addtocart-button" value="<?php echo JText::_('COM_VIRTUEMART_CART_ADD_TO') ?>" title="<?php echo JText::_('COM_VIRTUEMART_CART_ADD_TO') ?>" />
<?php // Display the add to cart button END ?>
<input type="hidden" class="pname" value="<?php echo $product->product_name ?>" />
<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="view" value="cart" />
<noscript><input type="hidden" name="task" value="add" /></noscript>
<input type="hidden" name="virtuemart_product_id[]" value="<?php echo $product->virtuemart_product_id ?>" />
<?php /** @todo Handle the manufacturer view */ ?>
<input type="hidden" name="virtuemart_manufacturer_id" value="<?php echo $product->virtuemart_manufacturer_id ?>" />
<input type="hidden" name="virtuemart_category_id[]" value="<?php echo $product->virtuemart_category_id ?>" />
 
<?php } ?>
 
</form>

Это выводит кнопку купить как карточке товара.
Мне нужно было вывести в разных шаблонах разные кнопки решил изменив не много код.
Решение без выбора количества товара!
Вставляем сюда
/public_html/components/com_virtuemart/views/category/tmpl/default1.php либо
public_html/templates/Ваш шаблон/html/com_virtuemart/category/default1.php

Код:
<div class="addtocart-area">
<form method="post" class="product js-recalculate" action="<?php echo JRoute::_ ('index.php'); ?>">
 
<?php // Display the add to cart button?>
 
<span class="addtocart">
<input type="submit" name="addtocart" class="addtocart-button" value=" В Корзину " title="Add to Cart" />
 
</span>
 
<div class="clear"></div>
 
<?php // Display the add to cart button END ?>
<input type="hidden" name="quantity[]" value="1" />
<input type="hidden" class="pname" value="<?php echo $product->product_name ?>"/>
<input type="hidden" name="option" value="com_virtuemart"/>
<input type="hidden" name="view" value="cart"/>
<noscript><input type="hidden" name="task" value="add"/></noscript>
<input type="hidden" name="virtuemart_product_id[]" value="<?php echo $product->virtuemart_product_id ?>"/>
</form>



Этот код выводит Задать вопрос по данному товару! Решение брал здесь:Для просмотра ссылки Войди или Зарегистрируйся Точно тему не вспомню!

Код:
<font size="3" color="red" fase="Tahoma, Times, Verdana">
<?php $url = JRoute::_('index.php?option=com_virtuemart&view=productdetails&task=askquestion&virtuemart_product_id=' . $product->virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id . '&tmpl=component');?>
<div class="orderby-displaynumber">
<a class="modal" rel="{handler:'iframe',size:{x:500,y:500}}"" href="<?php echo $url ?>" ><?php echo JText::_('Задать Вопрос по товару.')?></a></p></font>
 
Вот обнаружил чуть более короткий вариант - 40 строк против 62
PHP:
<form method="post" class="product" action="index.php" id="addtocartproduct<?php echo $product->virtuemart_product_id ?>">
    <div class="addtocart-bar">

            <?php // Display the quantity box ?>
            <!-- <label for="quantity<?php echo $product->virtuemart_product_id;?>" class="quantity_box"><?php echo JText::_('COM_VIRTUEMART_CART_QUANTITY'); ?>: </label> -->
            <span class="quantity-box">
                <input  type="text" class="quantity-input" name="quantity[]" value="1" />
            </span>
            <span class="quantity-controls">
                <input type="button" class="quantity-controls quantity-plus" />
                <input type="button" class="quantity-controls quantity-minus" />
            </span>
            <?php // Display the quantity box END ?>

            <?php // Add the button
            $button_lbl = JText::_('COM_VIRTUEMART_CART_ADD_TO');
            $button_cls = ''; //$button_cls = 'addtocart_button';
            if (VmConfig::get('check_stock') == '1' && !$product->product_in_stock) {
                $button_lbl = JText::_('COM_VIRTUEMART_CART_NOTIFY');
                $button_cls = 'notify-button';
            } ?>

            <?php // Display the add to cart button ?>
            <span class="addtocart-button">
                <input type="submit" name="addtocart"  class="addtocart-button" value="<?php echo $button_lbl ?>" title="<?php echo $button_lbl ?>" />
            </span>

        <div class="clear"></div>
        </div>

        <?php // Display the add to cart button END ?>
        <input type="hidden" class="pname" value="<?php echo $product->product_name ?>">
        <input type="hidden" name="option" value="com_virtuemart" />
        <input type="hidden" name="view" value="cart" />
        <noscript><input type="hidden" name="task" value="add" /></noscript>
        <input type="hidden" name="virtuemart_product_id[]" value="<?php echo $product->virtuemart_product_id ?>" />
        <?php /** @todo Handle the manufacturer view */ ?>
        <input type="hidden" name="virtuemart_manufacturer_id" value="<?php echo $product->virtuemart_manufacturer_id ?>" />
        <input type="hidden" name="virtuemart_category_id[]" value="<?php echo $product->virtuemart_category_id ?>" />
</form>
Может кому пригодится.
Спасибо, но есть одно НО! Когда я убираю выбор количества, перестает работать! Как безболезненно убрать кнопки +и- и
выбор количества???
 
Спасибо, но есть одно НО! Когда я убираю выбор количества, перестает работать! Как безболезненно убрать кнопки +и- и
выбор количества???
Не надо ничего удалять - достаточно в стилях для блока, где выводятся эти кнопки и поле ввода кол-ва, прописать display:none а именно:
PHP:
span.quantity-box,span.quantity-controls input.quantity-controls{display:none;}
 
Не надо ничего удалять - достаточно в стилях для блока, где выводятся эти кнопки и поле ввода кол-ва, прописать display:none а именно:
PHP:
span.quantity-box,span.quantity-controls input.quantity-controls{display:none;}
Все получилось, просто не очистил кэш. Добра Вам.
Увы, но ничего не получается. Посмотрите, если есть время? Какой мне файл править в CSS?
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Дабы не плодить новых тем, тем более вопрос, интересующий меня, как раз и относится к этой злосчастной кнопке)))
Итак, вывел кнопку на страничке категорий, запихнул в отдельный слой, получилось как на скрине, ниже прилагаю код фрагмента соответствующей странички:
Код:
<div class="knopki">
                    <a href="<?php echo $product->link; ?>" ="icon-productdetails">Подробнее</a>
                    <div class="korzina">
<form method="post" class="product" action="index.php" <?php echo $product->virtuemart_product_id ?>">
    <div class="addtocart-bar">
            <?php // Display the quantity box ?>
            <!-- <label for="quantity<?php echo $product->virtuemart_product_id;?>" class="quantity_box"><?php echo JText::_('COM_VIRTUEMART_CART_QUANTITY'); ?>: </label> -->
            <span class="quantity-box" style="display:none">
                <input  type="text" class="quantity-input" name="quantity[]" value="1" />
            </span>
            <span class="quantity-controls" style="display:none">
                <input type="button" class="quantity-controls quantity-plus" />
                <input type="button" class="quantity-controls quantity-minus" />
            </span>
            <?php // Display the quantity box END ?>
            <?php // Add the button
            $button_lbl = JText::_('COM_VIRTUEMART_CART_ADD_TO');
            $button_cls = ''; //$button_cls = 'addtocart_button';
            if (VmConfig::get('check_stock') == '1' && !$product->product_in_stock) {
                $button_lbl = JText::_('COM_VIRTUEMART_CART_NOTIFY');
                $button_cls = 'notify-button';
            } ?>
            <?php // Display the add to cart button ?>
            <span class="addtocart-button">
                <input type="submit" name="addtocart"  class="addtocart-button" value="<?php echo $button_lbl ?>" title="<?php echo $button_lbl ?>" />
            </span>
        <div class="clear"></div>
        </div>
        <?php // Display the add to cart button END ?>
        <input type="hidden" class="pname" value="<?php echo $product->product_name ?>">
        <input type="hidden" name="option" value="com_virtuemart" />
        <input type="hidden" name="view" value="cart" />
        <noscript><input type="hidden" name="task" value="add" /></noscript>
        <input type="hidden" name="virtuemart_product_id[]" value="<?php echo $product->virtuemart_product_id ?>" />
        <?php /** @todo Handle the manufacturer view */ ?>
        <input type="hidden" name="virtuemart_manufacturer_id" value="<?php echo $product->virtuemart_manufacturer_id ?>" />
        <input type="hidden" name="virtuemart_category_id[]" value="<?php echo $product->virtuemart_category_id ?>" />
</form>
</div>
                </div>
Но тут возникло маленькое обстоятельство - многие товары имеют дочерние и соответственно родитель служит как бы базой для объединения и купить его нельзя (цена не указывается, количество на складе ноль). Но при тесте шаблона выяснилось, что тестеры до умопомрачения жмут на кнопку купить, не догадываясь, что надо перейти в карточку товара и выбрать вариант из дочерних товаров...
Вот и подошли вплотную к моему вопросу - как обернуть код кнопки "купить" (или весь слой "korzina"), чтобы при наличии дочерних товаров она либо скрывалась, либо (что в принципе предпочтительнее) работала как кнопка "подробнее". Моих знаний РНР увы не хватает(((. Бьюсь уже который день, не могу правильно прописать условие if... else

Помогите, если кто знает!!!
 

Вложения

  • category.jpg
    category.jpg
    25,3 KB · Просмотры: 21
Дабы не плодить новых тем, тем более вопрос, интересующий меня, как раз и относится к этой злосчастной кнопке)))
Но тут возникло маленькое обстоятельство - многие товары имеют дочерние и соответственно родитель служит как бы базой для объединения и купить его нельзя (цена не указывается, количество на складе ноль). Но при тесте шаблона выяснилось, что тестеры до умопомрачения жмут на кнопку купить, не догадываясь, что надо перейти в карточку товара и выбрать вариант из дочерних товаров...
Вот и подошли вплотную к моему вопросу - как обернуть код кнопки "купить" (или весь слой "korzina"), чтобы при наличии дочерних товаров она либо скрывалась, либо (что в принципе предпочтительнее) работала как кнопка "подробнее". Моих знаний РНР увы не хватает(((. Бьюсь уже который день, не могу правильно прописать условие if... else
Помогите, если кто знает!!!
если вы указываете для родителя кол-во на складе 0, то и делайте проверку по кол-во, если =0, то кнопку купить просто не выводите и все)

<?php if($product->product_in_stock>0) {
?>
<div class="korzina">
.....
</div>
<?php }?>
 
Вот самый простый способ вивести кнопку Купить
<?php
require_once("modules/mod_virtuemart_product/helper.php");
echo mod_virtuemart_product::addtocart($product);
?>
 
Прочитал внимательно тему, не нащёл решения для 3-ей версии джумлы. И в интернете про эту проблему много говорят, но только про вторую версию. Ребят, подскажите, очень нужно решение. Для 3-ей версии вышеописанные решения не подходят.
 
Назад
Сверху