Вывод поля количества товара в модулях (последние, хиты, рекомендуемые)

Тема в разделе "OpenCart", создана пользователем pascha, 26 янв 2013.

  1. pascha

    pascha

    Регистрация:
    26 ноя 2012
    Сообщения:
    0
    Симпатии:
    1
    Итак, задача состоит в выводе поля выбора количества товара в модулях (последние, хиты, рекомендуемые).
    Что делал (по аналогии с выводом данной опции в карточке товара: модуль bestseller)

    catalog/controller/module/bestseller.php


    Код:
    $this->data['text_minimum'] = sprintf($this->language->get('text_minimum'), $product_info['minimum']);

    Код:
    'minimum'		=> $result['minimum'],
    Код:
    if ($product_info['minimum']) {
    	$this->data['minimum'] = $product_info['minimum'];
       } else {
    	$this->data['minimum'] = 1;
     
    
    catalog/view/theme/default/template/module/bestseller.tpl

    Код:
    <div class="cart"><input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button" /></div>
    
    поменял на:

    Код:
    <div class="cart">
    		  <input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" />
    		  <input type="hidden" name="product_id" size="2" value="<?php echo $product_id; ?>" />
    		 <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');" class="button" />
    </div>
    
    Итог: отображение окна ввода количества товара есть, при вводе любого количества- в корзину улетает 1 товар.
    Поправьте пожалуйста.
     
  2. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    648
    Симпатии:
    327
    Вроде всё верно, только вот в контроллере, я бы проставил:
    Код:
    'minimum'	=> $result['minimum'] ? $result['minimum'] : 1 ,
    'text_minimum' => sprintf($this->language->get('text_minimum'), $result['minimum']),
    То есть, что б получилось что то типа:
    Код:
    $this->data['products'][] = array(
    				'product_id' => $result['product_id'],
    				'thumb'		=> $image,
    				'name'		=> $result['name'],
    				'price'		=> $price,
    				'special'	  => $special,
    				'minimum'	=> $result['minimum'] ? $result['minimum'] : 1 ,
    				'text_minimum' => sprintf($this->language->get('text_minimum'), $result['minimum']),
    				'rating'	=> $rating,
    				'reviews'	=> sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
    				'href'		=> $this->url->link('product/product', 'product_id=' . $result['product_id']),
    			);
     
    pascha нравится это.
  3. pascha

    pascha

    Регистрация:
    26 ноя 2012
    Сообщения:
    0
    Симпатии:
    1
    изменил...добавляется 1 товар (((
    http://portalbest.elitno.net/proba/
    bestseller.php

    bestseller.tpl
     
  4. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    648
    Симпатии:
    327
    pascha нравится это.
  5. pascha

    pascha

    Регистрация:
    26 ноя 2012
    Сообщения:
    0
    Симпатии:
    1
    Baco, огромное тебе спасибо, все получилось)
    итак решение моей проблемы (думаю реализуемо во всех модулях, буду пробовать)
    /catalog/view/theme/default/template/module/bestseller.tpl
    Найти:

    Код:
    <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" />
    Заменить на:
    Код:
    <input type="text" value="1" class="item-<?php echo $product['product_id']; ?>" />
    <input type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');" class="button" />
    Подключаем скрипт ( я вставил после последнего </div> ):
    Код:
    <script type="text/javascript"><!--
    function addQtyToCart(product_id) {
      var qty = $('.item-' + product_id).val();
      if ((parseFloat(qty) != parseInt(qty)) || isNaN(qty)) {
    		qty = 1;
      }
      addToCart(product_id, qty);
    }
    //--></script> 
    Внимание!
    Проверить соответствие в
    catalog/view/javascript/common.js

    Код:
    function addToCart(product_id, quantity) {
    quantity = typeof(quantity) != 'undefined' ? quantity : 1;
    $.ajax({
      url: 'index.php?route=checkout/cart/update',
      type: 'post',
      data: 'product_id=' + product_id + '&quantity=' + quantity,
    Если так:
    Код:
    function addToCart(product_id) {
    $.ajax({
    url: 'index.php?route=checkout/cart/update',
    type: 'post',
    data: 'product_id=' + product_id,
    То меняем на:

    Код:
    function addToCart(product_id, quantity) {
    quantity = typeof(quantity) != 'undefined' ? quantity : 1;
    $.ajax({
      url: 'index.php?route=checkout/cart/update',
      type: 'post',
      data: 'product_id=' + product_id + '&quantity=' + quantity,
     
  6. pascha

    pascha

    Регистрация:
    26 ноя 2012
    Сообщения:
    0
    Симпатии:
    1
    теперь еще хотелось бы усовершенствовать:
    сделать вот так:

    [​IMG]

    есть примеры реализации?
     
  7. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    648
    Симпатии:
    327
  8. pascha

    pascha

    Регистрация:
    26 ноя 2012
    Сообщения:
    0
    Симпатии:
    1
    ниасилил))))
    в bestseller.tpl
    Код:
    <div class="cart"><input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" class="item-<?php echo $product['product_id']; ?>" />
    <input type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');" class="button" /></div>  
    в xml
    если:

    Код:
    <search position="replace"><![CDATA[<input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" class="item-<?php echo $product['product_id']; ?>" />]]></search>
    Код:
    ..... onclick="btnminus(<?php echo $minimum; ?>);">
    <input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" class="item-<?php echo $product['product_id']; ?>" /> <img alt="" ....... 
    не работает...(((
    убираю и там и там, или поочередно
    Код:
    class="item-<?php echo $product['product_id']; ?>"
    начинает работать, но при нажатии на + или - в любом товаре: число меняется только в первом товаре (ну это и понятно))))
    Вот такие дела)))
     
  9. pascha

    pascha

    Регистрация:
    26 ноя 2012
    Сообщения:
    0
    Симпатии:
    1
    проблему решил путем ввода в документ обычного js скрипта "плюс- минус"
    Код:
    </script>
     
     
    <style type="text/css">
    	span {cursor:pointer; }
    </style>
    <script type="text/javascript" >
    $(document).ready(function() {
    	$('.minus').click(function () {
    		var $input = $(this).parent().find('input');
    		var count = parseInt($input.val()) - 1;
    		count = count < 1 ? 1 : count;
    		$input.val(count);
    		$input.change();
    		return false;
    	});
    	$('.plus').click(function () {
    		var $input = $(this).parent().find('input');
    		$input.val(parseInt($input.val()) + 1);
    		$input.change();
    		return false;
    	});
    }); 
     
    </script>
    Код:
    <div class="cart"><span class="minus"><img src="catalog/view/theme/default/image/minus.png"></span><input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" class="item-<?php echo $product['product_id']; ?>" /><span class="plus"><img src="catalog/view/theme/default/image/plus.png"></span>
    <br />
    <input type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');" class="button" /></div>  
    все работает на ура, если б не одно "но"... на кнопке при наборе количества стрелками надпись "купить" так же меняется на цифры- количество товара)))) ( скрипт отрабатывает все input*ы что есть в документе )
     
  10. pascha

    pascha

    Регистрация:
    26 ноя 2012
    Сообщения:
    0
    Симпатии:
    1
    пришлось рисовать и менять кнопку )))
    Код:
    <input type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');" class="button" />
    на
    Код:
    <button onClick="addQtyToCart('<?php echo $product['product_id']; ?>');"><img src=catalog/view/theme/default/img/button_buy_b.png></button>