Перейти к содержанию
!Shoorf

Кнопка "купить" прямо из общего списка товаров

Рекомендуемые сообщения

Задумываюсь о том, чтобы сделать кнопку покупки товара прямо в общем списке, например на главной странице, где новые поступления. Кто-нибудь пробовал у себя такое сделать? Без разницы где, может на странице поиска, на странице спецпредложений или ещё где.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделать это вполне реально, нужно только немного поковырять шаблон на предмет переменных/констант которые выводят эту кнопку и кол-во товара

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделать это вполне реально, нужно только немного поковырять шаблон на предмет переменных/констант которые выводят эту кнопку и кол-во товара

Вот нашел в category.tpl
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="product">              <?php if ($options) { ?>              [b]<?php echo $text_options; ?>[/b]              <div style="background: #FFFFCC; border: 1px solid #FFCC33; padding: 10px; margin-top: 2px; margin-bottom: 15px;">                <table style="width: 100%;">                  <?php foreach ($options as $option) { ?>                  <tr>                    <td><?php echo $option['name']; ?>:                      <select name="option[<?php echo $option['option_id']; ?>]">                        <?php foreach ($option['option_value'] as $option_value) { ?>                        <option value="<?php echo $option_value['option_value_id']; ?>"><?php echo $option_value['name']; ?>                        <?php if ($option_value['price']) { ?>                        <?php echo $option_value['prefix']; ?><?php echo $option_value['price']; ?>                        <?php } ?>                        </option>                        <?php } ?>                      </select></td>                  </tr>                  <?php } ?>                </table>              </div>              <?php } ?>              <?php if ($display_price) { ?>              <?php if ($discounts) { ?>              [b]<?php echo $text_discount; ?>[/b]              <div style="background: #F7F7F7; border: 1px solid #DDDDDD; padding: 10px; margin-top: 2px; margin-bottom: 15px;">                <table style="width: 100%;>                   <tr>                    <td style="text-align: right;">[b]<?php echo $text_order_quantity; ?>[/b]</td>                    <td style="text-align: right;">[b]<?php echo $text_price_per_item; ?>[/b]</td>                  </tr>                  <?php foreach ($discounts as $discount) { ?>                  <tr>                    <td style="text-align: right;"><?php echo $discount['quantity']; ?></td>                    <td style="text-align: right;"><?php echo $discount['price']; ?></td>                  </tr>                  <?php } ?>                </table>              </div>              <?php } ?>              <?php } ?>              <div style="background: #F7F7F7; border: 1px solid #DDDDDD; padding: 10px;"><?php echo $text_qty; ?>                   <input type="text" name="quantity" size="3" value="1" />                <a onclick="$('#product').submit();" id="add_to_cart" class="button"><span><?php echo $button_add_to_cart; ?></span></a></div>              <input type="hidden" name="product_id" value="<?php echo $product_id; ?>" />              <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" />            </form>
Как бы его перелопатить, что б возле цены вывести например картинку корзины или плюсик какой-то, при нажатии которой позиция добавляеться к корзину в количестве 1шт. Парни, кто может помочь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть платный модуль - "Быстрая покупка" . Выводится список всех товаров горизонтальными строками с функцией покупки . Если интересно давай скинемся по 150р на двоих и купим . Руссифицировать я его смогу сам .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть платный модуль - "Быстрая покупка" . Выводится список всех товаров горизонтальными строками с функцией покупки . Если интересно давай скинемся по 150р на двоих и купим . Руссифицировать я его смогу сам .

Дай ссылку, гляну хоть подойдет или нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть платный модуль - "Быстрая покупка" . Выводится список всех товаров горизонтальными строками с функцией покупки . Если интересно давай скинемся по 150р на двоих и купим . Руссифицировать я его смогу сам .

Дай ссылку, гляну хоть подойдет или нет.
В инете бесплатно не нашёл .Выглядит так , стоит 10 баксов:

post-70-1293741782,4653_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задумываюсь о том, чтобы сделать кнопку покупки товара прямо в общем списке, например на главной странице, где новые поступления. Кто-нибудь пробовал у себя такое сделать? Без разницы где, может на странице поиска, на странице спецпредложений или ещё где.

Я недавно реализовывал такую фичу для магазина <!-- m -->http://vkorobke.lg.ua<!-- m -->Решение простое: добавляем на страницу JS-функцию (у меня она называется "buyProduct"):
<script type="text/javascript">function buyProduct(id){        $.ajax({            type: 'post',            url: 'index.php?route=module/cart/callback',            dataType: 'html',            data: 'product_id='+id+'&quantity=1',            success: function (html) {                $('#module_cart .middle').html(html);            },                            complete: function () {                var image = $('#image'+id).offset();                var cart  = $('#module_cart').offset();                    $('#image'+id).before('<img src="' + $('#image'+id).attr('src') + '" id="temp" style="position: absolute; top: ' + image.top + 'px; left: ' + image.left + 'px;" />');                    params = {                    top : cart.top + 'px',                    left : cart.left + 'px',                    opacity : 0.0,                    width : $('#module_cart').width(),                      heigth : $('#module_cart').height()                };                            $('#temp').animate(params, 'slow', false, function () {                    $('#temp').remove();                });                    }                    });                    }</script>
в нужном нам контроллере (для главной страницы это /catalog/controller/common/home.php) находим место, где в шаблон передаётся массив товаров и добавляем передачу идентификатора:
$this->data['products'][] = array(  'id'    => $result['product_id'], /*это та самая строчка*/  'name'    => $result['name'],  'model'   => $result['model'],  'rating'  => $rating,  'stars'   => sprintf($this->language->get('text_stars'), $rating),  'thumb'   => image_resize($image, $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')),  'price'   => $price,  'special' => $special,  'href'    => $this->model_tool_seo_url->rewrite($this->url->http('product/product&product_id=' . $result['product_id'])));
и добавляем в шаблон саму кнопку покупки, которая вызывает нашу функцию:
[url="#"]);return false;"  id="add_to_cart<?php echo $products[$j]['id']; ?>" class="buy">[/url]Ну и что бы работала анимация к атрибуту "id" изображений товаров дописываем наш идентификатор: id="image<?php echo $products[$j]['id']; ?>"
и работает :shock:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И все-таки мир не без добрых людей :shock: но я попробовал и или что не туда вставил или как всегда пропустил что то но у меня вместо списка товаров вообще пустая страница ((( Можно как нибудь поподробней что и куда вставлять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выражаем благодарность brevis за решение этого вопроса )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за "кнопку" !!!

Теперь бы тему закрыть уже до конца !

Как сделать добавление товара с выбором кол-ва !?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужна помощь в исправлении ошибки !!!!

В корзине добавляем напротив каждого товара - кнопку удалить (пример сайт Вкоробке ).

В cart.tpl добавляем скрипт :

<script type="text/javascript">function delProduct(id){$.ajax({type: 'post',url: 'index.php?route=module/cart/callback',dataType: 'html',data: 'product_id='+id+'&_opt=del',success: function (html) {$('#module_cart').html(html);}});</script>
и там же добавляем ячейку для знака удалить х

после

<td align="left" valign="top"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a>
вставляем

<td align="left" valign="top">[url="#"]);return false;">x[/url]
.. но не работает - где-то есть ошибка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.. но не работает - где-то есть ошибка

Ещё бы :)Там кроме изменений в шаблоне нужно ещё изменения в контроллер вносить.Уже несколько человек обращались ко мне за хелпом в данном вопросе, думаю пора уже эту фичу включать в сборку :(Короче, вот файлы, которые я менял (специально сделал вариант для шаблона "default", у коробка там немного шаблон другой): http://opencart.studio-vk.com/catalog/v ... er.tpl.txthttp://opencart.studio-vk.com/catalog/v ... rt.tpl.txthttp://opencart.studio-vk.com/catalog/c ... rt.php.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.. но не работает - где-то есть ошибка

Ещё бы :)Там кроме изменений в шаблоне нужно ещё изменения в контроллер вносить.Уже несколько человек обращались ко мне за хелпом в данном вопросе, думаю пора уже эту фичу включать в сборку :(Короче, вот файлы, которые я менял (специально сделал вариант для шаблона "default", у коробка там немного шаблон другой): http://opencart.studio-vk.com/catalog/v ... er.tpl.txthttp://opencart.studio-vk.com/catalog/v ... rt.tpl.txthttp://opencart.studio-vk.com/catalog/c ... rt.php.txt
Я делал по аналогии с кнопкой "Добавить в корзину" - там всего лишь добавили в контроллер идентификатор id для товара . . . наверное я спутал 2 разных файла контроллера и потому подуал что он уже добавлен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а для чего делать добавления в файл хэдер.тпл ? Как он связан с файлом модуля корзины ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задумываюсь о том, чтобы сделать кнопку покупки товара прямо в общем списке, например на главной странице, где новые поступления. Кто-нибудь пробовал у себя такое сделать? Без разницы где, может на странице поиска, на странице спецпредложений или ещё где.

Я недавно реализовывал такую фичу для магазина <!-- m -->http://vkorobke.lg.ua<!-- m -->Решение простое: добавляем на страницу JS-функцию (у меня она называется "buyProduct"):
<script type="text/javascript">function buyProduct(id){        $.ajax({            type: 'post',            url: 'index.php?route=module/cart/callback',            dataType: 'html',            data: 'product_id='+id+'&quantity=1',            success: function (html) {                $('#module_cart .middle').html(html);            },                            complete: function () {                var image = $('#image'+id).offset();                var cart  = $('#module_cart').offset();                    $('#image'+id).before('<img src="' + $('#image'+id).attr('src') + '" id="temp" style="position: absolute; top: ' + image.top + 'px; left: ' + image.left + 'px;" />');                    params = {                    top : cart.top + 'px',                    left : cart.left + 'px',                    opacity : 0.0,                    width : $('#module_cart').width(),                      heigth : $('#module_cart').height()                };                            $('#temp').animate(params, 'slow', false, function () {                    $('#temp').remove();                });                    }                    });                    }</script>
в нужном нам контроллере (для главной страницы это /catalog/controller/common/home.php) находим место, где в шаблон передаётся массив товаров и добавляем передачу идентификатора:
$this->data['products'][] = array(  'id'    => $result['product_id'], /*это та самая строчка*/  'name'    => $result['name'],  'model'   => $result['model'],  'rating'  => $rating,  'stars'   => sprintf($this->language->get('text_stars'), $rating),  'thumb'   => image_resize($image, $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')),  'price'   => $price,  'special' => $special,  'href'    => $this->model_tool_seo_url->rewrite($this->url->http('product/product&product_id=' . $result['product_id'])));
и добавляем в шаблон саму кнопку покупки, которая вызывает нашу функцию:
[url="#"]);return false;"  id="add_to_cart<?php echo $products[$j]['id']; ?>" class="buy">[/url]Ну и что бы работала анимация к атрибуту "id" изображений товаров дописываем наш идентификатор: id="image<?php echo $products[$j]['id']; ?>"
и работает https://opencartforum.com/public/style_emoticons/default/icon_question.gif
Простите за глупый вопрос, объясните по певому и третьему пункту, куда и где вставлять, я не очень понял, спасибо за понимание. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

timico, вот что получается в итоге после всех изменений:

http://opencart.studio-vk.com/catalog/v ... me.tpl.txt

http://opencart.studio-vk.com/catalog/c ... me.php.txt

Сравните эти файлы с оригинальными при помощи какой-нибудь программы сравнения файлов (например, есть такой плагин для Total Commander) — сразу увидите и будет понятно что и куда добавляется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.. но не работает - где-то есть ошибка

Ещё бы https://opencartforum.com/public/style_emoticons/default/icon_question.gif

Там кроме изменений в шаблоне нужно ещё изменения в контроллер вносить.

Уже несколько человек обращались ко мне за хелпом в данном вопросе, думаю пора уже эту фичу включать в сборку :)

Короче, вот файлы, которые я менял (специально сделал вариант для шаблона "default", у коробка там немного шаблон другой):

<!-- m -->http://opencart.studio-vk.com/catalog/v ... er.tpl.txt<!-- m -->

<!-- m -->http://opencart.studio-vk.com/catalog/v ... rt.tpl.txt<!-- m -->

<!-- m -->http://opencart.studio-vk.com/catalog/c ... rt.php.txt<!-- m -->

Все сделал по аналогии с этими тремя файлами и вроде бы все работает... НО...

Описываю ситуацию: на странице товара нажимаем кнопку добавить в корзину - товар улетел в корзину и если мы наводим мышь на кнопочку "удалить" ссылка имеет вид

[url="#"]x[/url]
и товар при клике удаляется... если после добавления в корзину любого товара не удалить его сразу а перейти на любую другую страницу сайта, то при наведении на кнопочку "удалить" ссылка имеет вид
[url="#"]Notice</b>: Undefined index:  id in [b]/home/funsibru/public_html/comcig/catalog/view/theme/default/template/module/cart.tpl[/b] on line [b]15[/b]);return false;" style="color: red; text-decoration: none; font-weight: bold;" title="Удалить">x[/url]
и товар при клике НЕ удаляется, а просто перебрасывает на главную... если после этого добавить к уже существующим товарам еще один и не переходить со страницы на которой купили товар на другие страницы, то кнопочки удалить вновь будут работать у всех товаров, и все товары будут удаляться. Как я понимаю, это не правильная работа - товар должен удаляться из карзины в правой колонке после любых прогулок по сайту.

При этом на <!-- m -->[url=http://opencart.studio-vk.com">http://opencart.studio-vk.com</a><!-- m --> в любой момент времени кнопочка удалить имеет вид

<a href="#" onclick="delProduct(45);return false;" style="color: red; text-decoration: none; font-weight: bold;" title="Удалить]x[/url]
и товар после всех путешествий по сайту прекрасно удаляется в любой момент...

UP: проблему решил - нужно внимательно!!! сравнить имеющиеся файлы с файлами-образцами. Пару строк не углядел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

timico, вот что получается в итоге после всех изменений:

http://opencart.studio-vk.com/catalog/v ... me.tpl.txt

http://opencart.studio-vk.com/catalog/c ... me.php.txt

Сравните эти файлы с оригинальными при помощи какой-нибудь программы сравнения файлов (например, есть такой плагин для Total Commander) — сразу увидите и будет понятно что и куда добавляется.

Все работает. Спасибо!

А как бы еще в категории добавить тоже самое?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

timico, вот что получается в итоге после всех изменений:

http://opencart.studio-vk.com/catalog/v ... me.tpl.txt

http://opencart.studio-vk.com/catalog/c ... me.php.txt

Сравните эти файлы с оригинальными при помощи какой-нибудь программы сравнения файлов (например, есть такой плагин для Total Commander) — сразу увидите и будет понятно что и куда добавляется.

Все работает. Спасибо!

А как бы еще в категории добавить тоже самое?

А ты теперь выбери(добавь в корзину) несколько товаров для примера , затем перейди на страницу самой корзины . Ты увидишь что товары в самой корзине и товары в боковом модуле корзины совпадают . Теперь удали товар в этом боковом модуле который уже с данной доработкой . А потом сделай наоборот - удали товар не в боковом модуле а в самой корзине . И посмотри что будет в итоге этих действий .

.... Вот в этом и есть маленькая недоработка ! .... заказчика это будет очень сильно путать .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нда.. получается если находиться на странице самой корзины, то удаляя позиции в блоке справа - они удаляются только в нем (в блоке справа), но не в самой корзине. При этом если обновить страницу - то и в основной корзине товар исчезнет. А если удалять в самой корзине, то удаляется и там, и там ибо при нажатии в основной корзине "обновить" страничка таки обновляется.... Как исправить? Кто поможет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребята давайте тему до финала доведем - как исправить указанный выше недочётик !???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добавьте обновление страницы в функцию delProduct.

Например, вместо

$('#module_cart .middle').html(html);
вставьте

document.location.href = document.location.href;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Респект brevis ! В репу тебе плюсанул !!!!

:) на самом деле тебя ждали

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×