[Решено] Как сделать кнопку "добавить в корзину" в категориях?

  • 63 Ответов
  • 47434 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн sm_ph

Так неудобно.
Чтобы купить, нужно догадаться нажать на "Подробнее..." или на ссылку названия товара, а уж там нажать на "Добавить в корзину".
Как бы добавить в категории кнопку "добавить в корзину", например рядом с названием или рядом с этим словом "Подробнее...".
Рылся в настройках VM2 не нашел такой кнопки.
Есть у кого решение этой проблемы?
« Последнее редактирование: 22.03.2012, 01:32:56 от beagler »

*

Оффлайн sm_ph

...И сам нашел ответ.
Простоват, но работает, по ходу дела доработаю.

components/com_virtuemart/views/category/tmpl/default.php

После кода:
<div class="width70 floatright">
<h2><?php echo JHTML::link($product->link, $product->product_name); ?></h2>

Вставить:
<?php echo JHTML::link($product->link, '<img src="url картинки" width="16" height="16" title="Купить" />'); ?>

Отмечу, что файлов может быть несколько-в шаблоне (шаблонах) и VM2.
По коду "<h2><?php echo JHTML::link($product->link, $product->product_name); ?></h2>" легко можно найти эти файлы (в шаблоне и VM2).

*

Оффлайн drewnya

Использовал этот код, вроде работает правильно
<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>

*

Оффлайн sm_ph

Когда жмешь на стрелочка (треугольники) количество прибавляется или уменьшается на 2 единицы.
« Последнее редактирование: 11.03.2012, 01:10:08 от sm_ph »

*

Оффлайн drewnya

/components/com_virtuemart/assets/js/vmprices.js
plus   = cart.find('.quantity-plus'),
minus  = cart.find('.quantity-minus'),
поменять на
plus   = cart.find('.quantity-plus').unbind("click"),
minus  = cart.find('.quantity-minus').unbind("click"),

*

Оффлайн sm_ph

Спасибо! Заработало.

drewnya, sm_ph, Подскажите, пожалуйста, куда вставлять этот код?
туда же, после
"<div class="width70 floatright">
<h2><?php echo JHTML::link($product->link, $product->product_name); ?></h2>"  ?

*

Оффлайн sm_ph

Можно сюда или в другое нужное место в этом файле.

Сделал все как написал drewnya, корзина появилась, нажимаю добавить в корзину, вылазит окошечко:

Но в саму корзину не добавляется!
Из "описания товара" корзина работает, но окошечко не вылазит, и надо делать обновления страницы чтобы увидеть изменения в корзине.
Помогите с 2 вопросами:
1. Что можно сделать чтобы работала корзина в категории
2. Как сделать чтобы корзина динамично обновлялась после нажатия кнопки "добавить в корзину" из "Описания товара"

p.s. товар то добавляется то нет в категории  :o не пойму от чего зависит это :'(
Может ли это быть потому то работаю с локального хоста?
« Последнее редактирование: 02.04.2012, 16:14:19 от Дмитрий Ф. »

Вопрос снят! Разобрался, не работало на локальном хосте.

День добрый! Добавление со странице категории решено, увеличение товара работает как положено +1, но после нажатия кнопки купить, всплывает окно "товар успешно добавлен" но этих окон появляется два, как можно избавится от от одного или на уж на крайняк вообще его убрать посмотреть можно здесь http://spinning96.ru/

*

Оффлайн WooSuuP

  • ****
  • 234
  • [+]11 / [-]1
  • Ословед Интерсвязи
    • Просмотр профиля
    • ЮМИ - Ресторан доставки Японской кухни
Все круто! сделал как написано! Но!
Не юзаю CSS самого вирта а юзаю CSS шаблона.
Как мне подписать кпки " - " " + " и перенести кнопки. В карточке товара все показывается нормально рядом - +
Смотреть вложение.
Как попрапвить?


[вложение удалено Администратором]
Хочу тИЦ на сайте 16000 и Google PR 6

*

Оффлайн sm_ph

Попробуйте отключить (убрать галку) "Использовать VirtueMart CSS".
Это находится в:
Панель управления VM - Настройки - Настройки - вкладка "Шаблоны" - Стили CSS и сценарии JavaScript (внизу справа).

Если убрать галку, стили VM должны стать "шаблоновскими", то есть кнопка должна стать как при переходе по ссылке "Подробнее", где предусмотренная VM-ом кнопка "Добавить в корзину", а так они могут быть не пойми какими.
Если результата нет, то тогда, скорее всего, придётся править стили в ручную в .css.
« Последнее редактирование: 24.05.2012, 11:28:43 от sm_ph »

*

Оффлайн WooSuuP

  • ****
  • 234
  • [+]11 / [-]1
  • Ословед Интерсвязи
    • Просмотр профиля
    • ЮМИ - Ресторан доставки Японской кухни
Попробуйте отключить (убрать галку) "Использовать VirtueMart CSS".
Это находится в:
Панель управления VM - Настройки - Настройки - вкладка "Шаблоны" - Стили CSS и сценарии JavaScript (внизу справа).

Если убрать галку, стили VM должны стать "шаблоновскими", то есть кнопка должна стать как при переходе по ссылке "Подробнее", где предусмотренная VM-ом кнопка "Добавить в корзину", а так они могут быть не пойми какими.
Если результата нет, то тогда, скорее всего, придётся править стили в ручную в .css.
CSS вирта отключен. проблема та же. да в принципе и одной кнопки купить было бы достаточно.
Хочу тИЦ на сайте 16000 и Google PR 6

*

Оффлайн WooSuuP

  • ****
  • 234
  • [+]11 / [-]1
  • Ословед Интерсвязи
    • Просмотр профиля
    • ЮМИ - Ресторан доставки Японской кухни
Задача оптимизировать этот код для получения кнопки "Купить" и ввода кол-ва товара в одной строке.
Как во вложении! Плачу ЯД от 100р за помощь в решении. от 200р. за предоставленное решение.


[вложение удалено Администратором]
Хочу тИЦ на сайте 16000 и Google PR 6

*

Оффлайн jouser

если у тебя родительский тег с ограниченной шириной, то для того что бы два элемента были в одной строке их суммарная ширина (вместе с марджинами и паддингами) не должна превышать ширину родителя. Плюс к кнопке "купить" надо прибавить float:left. Ширина текстового поля регулируется атрибутом size. как бы все. денег не надо)

*

Оффлайн valy2906

/components/com_virtuemart/assets/js/vmprices.js
plus   = cart.find('.quantity-plus'),
minus  = cart.find('.quantity-minus'),
поменять на
plus   = cart.find('.quantity-plus').unbind("click"),
minus  = cart.find('.quantity-minus').unbind("click"),

заменила всё как вы написали, но всё равно уменьшает или увеличивает количество на 2 единицы. Помогите!

*

Оффлайн valy2906

всё заработало. Надо было просто перезагрузить компьютер.

Код вроде работает, но после нажатия, в самой корзине меняется кодировка. И прочитать ничего нельзя.
Так же после нажатия "добавить в корзину" вылазит сообщение "продолжить покупки или перейти в корзину", так вот если нажать продолжить. То страница расплывается на весь экран со списком товаров, а сама корзина пропадает. Как сделать так чтобы корзина всегда была видна ?

Использовал этот код, вроде работает правильно
<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>
пасиб. работает..
но вопрос ...
как сделать чтоб если у товара не было цены или она =0 то кнопку "в корзину" скрывать?

*

Оффлайн Polosat

  • ****
  • 202
  • [+]7 / [-]0
  • Мечты - это то, из чего сделано будущее
    • Просмотр профиля
    • Создание сайтов Ногинск
Подскажите что добавить в код, что бы сделать кнопку добавить в корзину addtocart-button в категории - только для авторизированных пользователей - гостям просто каталог без кнопки купить?

Ура, получилось, отвечу сам себе, может кому и пригодится:

Как убрать кнопку добавить в корзину для гостей:

/components/com_virtuemart/views/category/tmpl/ваш_файл_шаблона_категории

           
1. ищем строку

   <?php // Display the quantity box END ?>  

и после добавляем
<?php 
 $user =& JFactory::getUser();
                    if(
$user->id) {               
                    if (!
VmConfig::get('use_as_catalog',0)) { ?>
 
            <?php 

2. ищем строку 
  
<?php // Display the add to cart button END ?>


и после  добавляем вот это
 <?php }  // Add To Cart Button END
                    
?>

подсмотрел решение вот тут http://forum.virtuemart.net/index.php?topic=95568.0
« Последнее редактирование: 13.01.2013, 16:01:12 от Polosat »

Кнопку добавления в корзину товара лучше сделать так <span class="addtocart-button">
                            
                                  <?php echo shopFunctionsF::getAddToCartButton ($product->orderable); ?>
                                 </span>
Столкнулся с ситуацией, в которой товар, найденный через фильтр добавлялся в корзину только с этой кнопкой.

*

Оффлайн Remer

А у меня вообще не появляется окно добавлено в корзину или нет. Просто как жму по пустому месту, хотя если обновить страницу то видно что в корзину добавлен товар.(Функция окна этого, включена) Подскажите ктот если знаете в чем беда

Прошу помощи уже куда не вставлял этот код

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

Смотрю на самые разнообразные примеры, но мой файл категорий кот находится тут components/com_virtuemart/views/category/tmpl/default.php вообще не похож. Ни одного упоминания про товары. Помогите куда вставить код (выше) в файл дефолта?


Сам файл дефолта
<?php
/**
*
* Show the products in a category
*
* @package VirtueMart
* @subpackage
* @author RolandD
* @author Max Milbers
* @todo add pagination
* @link http://www.virtuemart.net
* @copyright Copyright (c) 2004 - 2012 VirtueMart Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* VirtueMart is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
 * @version $Id: default.php 6104 2012-06-13 14:15:29Z alatak $
*/

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');

if (
$this->category->haschildren) {

// Category and Columns Counter
$iCol 1;
$iCategory 1;

// Calculating Categories Per Row
$categories_per_row VmConfig::get 'categories_per_row');
$category_cellwidth ' width'.floor 100 $categories_per_row );

// Separator
$verticalseparator " vertical-separator";
?>


<div class="category-view">

<?php // Start the Output
if ($this->category->children ) {
    foreach ( 
$this->category->children as $category ) {

    // Show the horizontal seperator
    if ($iCol == && $iCategory $categories_per_row) { ?>

    <div class="horizontal-separator"></div>
    <?php }

    // this is an indicator wether a row needs to be opened or not
    if ($iCol == 1) { ?>

    <div class="row">
    <?php }

    // Show the vertical separator
    if ($iCategory == $categories_per_row or $iCategory $categories_per_row == 0) {
    $show_vertical_separator ' ';
    } else {
    $show_vertical_separator $verticalseparator;
    }

    // Category Link
    $caturl JRoute::'index.php?option=com_virtuemart&view=category&virtuemart_category_id=' $category->virtuemart_category_id );

    // Show Category ?>

    <div class="category floatleft<?php echo $category_cellwidth $show_vertical_separator ?>">
    <div class="spacer">
    <h2>
    <a href="<?php echo $caturl ?>" title="<?php echo $category->category_name ?>">
    <?php echo $category->category_name ?>
    <br />
    <?php // if ($category->ids) {
    echo $category->images[0]->displayMediaThumb("",false);
    //} ?>

    </a>
    </h2>
    </div>
    </div>
    <?php
    
$iCategory ++;

    // Do we need to close the current row now?
    if ($iCol == $categories_per_row) { ?>

    <div class="clear"></div>
    </div>
    <?php
    $iCol 1;
    } else {
    $iCol ++;
    }
    }
}
// Do we need a final closing row tag?
if ($iCol != 1) { ?>

<div class="clear"></div>
</div>
   
<?php
}
?>


</div>
<?php ?>

*

Оффлайн koby84

может кому то поможет, недавно нашёл на другом форуме
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');
?>

Всем доброго времени суток. Посоветуйте, как можно такое реализовать:
В категории кнопка "Купить" выглядит по одному, а в самом товаре по другому.
Немного опишу свои телодвижения: в файлике components\com_virtuemart\views\category\tmpl\default.php
нашел место где описывается эта кнопочка, выглядит он вот так <?php // Product Details Button
echo JHTML::link ($product->linkJText::('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => $product->product_name'class' => 'product-details'));
?>

                        <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>
<?php // Display the quantity box END ?>

<?php // Add the button
$button_lbl JText::_('Купить');
$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>

когда пытаюст прикрутить вместо "addtocart-button" новый стиль "addtocart-button-category" (который описан в css), то не добавляется товар в корзину ((( не пойму почему всё слетает... ведь я всего лишь подключаю новый стиль

помогите пожалуйста

*

Оффлайн art-apple

Видимо повешано на этот класс событие js
Что мешает обернуть в div к примеру
<div class="myclass"><span class="addtocart-button"></span></div>в CSS
.myclass addtocart-button{
/*свойства*/
}


или можно класс дописать, к примеру
<span class="addtocart-button myclass"></span>
в CSS
span.addtocart-button.myclass{
/*свойства*/
}

поправьте меня, может что то не так делаю...
есть исходный код <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="myclass"><span class="addtocart-button">
<input type="submit" name="addtocart"  class="addtocart-button" value="<?php echo $button_lbl ?>" title="<?php echo $button_lbl ?>" />
</span></div>
в CSS добавил стиль .myclass addtocart-button
ничего не происходит
___________________
если делаю: <div class="myclass"><span class="addtocart-button"></span></div>
<input type="submit" name="addtocart"  class="addtocart-button" value="<?php echo $button_lbl ?>" title="<?php echo $button_lbl ?>" />
</span>
то кнопка становится просто стандартным submit
________________
по второму варианту уже писал что не срабатывает скрипт добавления в корзину ((

*

Оффлайн art-apple

Ну в первом варианте ошибка синтаксиса, пропустили точку (.myclass addtocart-button - Неправильно, .myclass .addtocart-button - правильно)
Чтобы применить стили конкретно к кнопке(те тегу input) то у вас должно быть
HTML разметка
<div class="myclass">
      <span class="addtocart-button">
            <input type="submit" name="addtocart"  class="addtocart-button" value="<?php echo $button_lbl ?>" title="<?php echo $button_lbl ?>" />
      </span>
</div>
CSS
.myclass span.addtocart-button input.addtocart-button{
/*свойства*/
}
либо используйте такой вариант
HTML разметка
     <span class="addtocart-button">
            <input type="submit" name="addtocart"  class="addtocart-button mybutton" value="<?php echo $button_lbl ?>" title="<?php echo $button_lbl ?>" />
      </span>
CSS
span.addtocart-button input.addtocart-button.mybutton{
/*свойства*/
}

делайте один в один, не нужно нигде пробелы ставить или убирать точки и тп, можете просто скопировать куски кода и все будет рботать

Спасибо. Держи + )))