[Помогите] Как сделать так, чтобы когда на складе 0 кнопка "купить" становилась "Под заказ".

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

  1. fster

    fster

    Регистрация:
    14 ноя 2012
    Сообщения:
    105
    Симпатии:
    38
    Всем доброго времени суток! Может кто то сталкивался с такой проблемой... Хочется чтобы если у товара количество 0, то кнопка "купить" менялась бы на "под заказ". Может модуль какой нибудь есть или небольшой допил. Буду рад любой помощи. Спасибо.
     
  2. Alexandr

    Alexandr

    Регистрация:
    6 ноя 2012
    Сообщения:
    179
    Симпатии:
    52
  3. vivivor

    vivivor

    Регистрация:
    4 янв 2013
    Сообщения:
    186
    Симпатии:
    162
  4. fster

    fster

    Регистрация:
    14 ноя 2012
    Сообщения:
    105
    Симпатии:
    38
    А если сделать просто что бы менялась кнопка (Заказать и цвет другой) и товар уходил в корзину. Модуль попробовал но хочется что бы всё через корзину шло.
     
  5. vivivor

    vivivor

    Регистрация:
    4 янв 2013
    Сообщения:
    186
    Симпатии:
    162
    template/product.tpl
    PHP:
    <?if((int)$quantity!=0):?>
        <input type="button" value="<?php echo $button_cart?>" id="button-cart" class="button" />
    <?else:?>
        <input type="button" value="<?php echo $button_predzakaz?>" id="button-cart" class="button" />
    <?endif?>
    controller/product.php
    PHP:
    //добавить строку
    $this->data['button_predzakaz'] = $this->language->get('button_predzakaz');
    //добавить строку
          
    $this->data['products'][] = array(
              
    'product_id' => $result['product_id'],
              
    'thumb'      => $image,
              
    'name'      => $result['name'],
              
    'price'      => $price,
              
    'special'    => $special,
              
    'rating'    => $rating,
              
    'reviews'    => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
              
    'href'      => $this->url->link('product/product''product_id=' $result['product_id']),
    //добавить строку
              
    'quantity'    => $result['quantity']
    //добавить строку
            
    );
          }
    language/product.php
    PHP:
    $_['button_predzakaz']         = 'Предзаказ';
     
  6. Павел_Б

    Павел_Б

    Регистрация:
    12 янв 2013
    Сообщения:
    67
    Симпатии:
    7
    vivivor, А можно подробней, после каких строк добавлять ваши??? и у меня файлы лежат в таких папках.. controller/product/product.php и т.д.
     
  7. Sanyh

    Sanyh

    Регистрация:
    15 ноя 2012
    Сообщения:
    90
    Симпатии:
    0
    в коде же написано что добавлять
     
  8. vivivor

    vivivor

    Регистрация:
    4 янв 2013
    Сообщения:
    186
    Симпатии:
    162
    PHP:
    //найти
    $this->data['entry_captcha'] = $this->language->get('entry_captcha');
    //после нее добавить
    $this->data['button_predzakaz'] = $this->language->get('button_predzakaz');
    в остальном все понятно
     
  9. fster

    fster

    Регистрация:
    14 ноя 2012
    Сообщения:
    105
    Симпатии:
    38
    VqMod допил по всем модулям для default темы. Если на складе >0 выводит кнопку "купить" иначе выводит кнопку "предзаказ". Товар всегда уходит в корзину.

     
  10. force

    force

    Регистрация:
    14 дек 2012
    Сообщения:
    20
    Симпатии:
    2
    Ребята help! Сборка макстор 1.5.4.1 Ошибка такого характера Notice: Undefined variable: quantity in ...\template\product\product.tpl on line 239 Код:
    Код:
    <?if((int)$quantity!=0):?>
     
  11. vivivor

    vivivor

    Регистрация:
    4 янв 2013
    Сообщения:
    186
    Симпатии:
    162
    эту строку добавил?

    PHP:
         $this->data['products'][] = array(
             
    'product_id' => $result['product_id'],
             
    'thumb'     => $image,
             
    'name'     => $result['name'],
             
    'price'     => $price,
             
    'special'    => $special,
             
    'rating'    => $rating,
             
    'reviews'    => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
             
    'href'     => $this->url->link('product/product''product_id=' $result['product_id']),
    //добавить строку
             
    'quantity'    => $result['quantity']
    //добавить строку
            
    );
         }
     
  12. force

    force

    Регистрация:
    14 дек 2012
    Сообщения:
    20
    Симпатии:
    2
    Да в файле catalog\controller\product\product.php

    Код:
    					 $this->data['products'][] = array(
    					'product_id' => $result['product_id'],
    					'thumb'		=> $image,
    					'name'		=> $result['name'],
    					'price'		=> $price,
    					'special'	  => $special,
    					'percent'	=> round((($result['price'] - $result['special'])/$result['price'])*100, 0),
    					'rating'	=> $rating,
    					'reviews'	=> sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
    					'href'		=> $this->url->link('product/product', 'product_id=' . $result['product_id']),
    					'quantity'	=> $result['quantity']
    				);
    			}
    
    Почему то не нравится условие как я понимаю...
     
  13. vivivor

    vivivor

    Регистрация:
    4 янв 2013
    Сообщения:
    186
    Симпатии:
    162
    На счет quantity в файле catalog\controller\product\product.php у меня еще что-то есть)) но это вроде было уже
    перед строкой
    PHP:
    $this->load->model('tool/image');
    стоит
    PHP:
          if ($product_info['quantity'] <= 0) {
                    
    $this->data['stock'] = $product_info['stock_status'];
                    
    $this->data['quantity'] = 0;

                   } elseif (
    $this->config->get('config_stock_display')) {
                    
    $this->data['stock'] = $product_info['quantity'];
                    
    $this->data['quantity'] = 1;
                   } else {
                    
    $this->data['stock'] = $this->language->get('text_instock');
                    
    $this->data['quantity'] = 1;
                   }
     
    force нравится это.
  14. fster

    fster

    Регистрация:
    14 ноя 2012
    Сообщения:
    105
    Симпатии:
    38
    Исправил пару ошибок...

     
  15. force

    force

    Регистрация:
    14 дек 2012
    Сообщения:
    20
    Симпатии:
    2
    Вот после этого ошибка исчезла, но не работает кнопка "Предзаказ"...Кнопка "Купить" работает. Подскажите куда копать? Функционал нужен такой же как у кнопки "Купить"
     
  16. ReBurn

    ReBurn

    Регистрация:
    25 янв 2013
    Сообщения:
    26
    Симпатии:
    0
    а по первому вопросу, это в настройке магазина можно настроить в обще то)
     
  17. vivivor

    vivivor

    Регистрация:
    4 янв 2013
    Сообщения:
    186
    Симпатии:
    162
    это должно работать
    Код:
    <?if((int)$quantity!=0):?>
    	<input type="button" value="<?php echo $button_cart; ?>" id="button-cart" class="button" />
    <?else:?>
    	<input type="button" value="<?php echo $button_predzakaz; ?>" id="button-cart" class="button" />
    <?endif?>
    во втором инпуте меняется только название кнопки
    language/product.php
    PHP:
    $_['button_predzakaz'] = 'Предзаказ';
     
  18. force

    force

    Регистрация:
    14 дек 2012
    Сообщения:
    20
    Симпатии:
    2
    Всем спасибо огромное, разобрался !

    А теперь по порядку:
    1. \catalog\controller\product\product.php
    PHP:
    Находим:
     
    $this->data['button_cart'] = $this->language->get('button_cart');
     
    после этого добавляем:
     
    $this->data['button_predzakaz'] = $this->language->get('button_predzakaz');
     
    находим:
     
    if (
    $product_info['quantity'] <= 0) {
    $this->data['stock'] = $product_info['stock_status'];
    } elseif (
    $this->config->get('config_stock_display')) {
    $this->data['stock'] = $product_info['quantity'];
    } else {
    $this->data['stock'] = $this->language->get('text_instock');
    }
     
    меняем на:
     
    if (
    $product_info['quantity'] <= 0) {
    $this->data['stock'] = $product_info['stock_status'];
    $this->data['quantity'] = 0;
    } elseif (
    $this->config->get('config_stock_display')) {
    $this->data['stock'] = $product_info['quantity'];
    $this->data['quantity'] = 1;
    } else {
    $this->data['stock'] = $this->language->get('text_instock');
    $this->data['quantity'] = 1;
    }
    2.\catalog\view\theme\ваша_тема\template\product\product.tpl
    PHP:
    находим:
     
    <div class="cart">
    <div><?php echo $text_qty?>
    <input type="text" name="quantity" size="2" value="<?php echo $minimum?>" />
    <input type="hidden" name="product_id" size="2" value="<?php echo $product_id?>" />
    &nbsp;
    <input type="button" value="<?php echo $button_cart?>" id="button-cart" class="button" />
    </div>
     
    меняем на:
     
    <div class="cart">
    <div><?php echo $text_qty?>
    <?if((int)$quantity!=0):?>
    <input type="text" name="quantity" size="2" value="<?php echo $minimum?>" />
    <input type="hidden" name="product_id" size="2" value="<?php echo $product_id?>" />
    &nbsp;
    <input type="button" value="<?php echo $button_cart?>" id="button-cart" class="button" />
    <?else:?>
    <input type="hidden" name="product_id" size="2" value="<?php echo $product_id?>" />
    <input type="button" value="<?php echo $button_predzakaz?>" id="button-cart" class="button" />
    <?endif?>
    </div>
    3.\catalog\language\russian\product\product.php
    Добавляем вниз:
    PHP:
    // Button
    $_['button_predzakaz']        = 'Предзаказ';
     
    vivivor нравится это.
  19. Recovers

    Recovers

    Регистрация:
    7 апр 2013
    Сообщения:
    14
    Симпатии:
    0
    Сделал как тут описано. Надпись меняется над "Предзаказ", только когда выбираешь товар и его просматриваешь. Подскажите где нужно добавить, что бы надпись менялась и на главной странице в модулях, а так же в категории когда выбираешь группу товаров(там выходит список товара в этой группе, там тоже остается кнопка "Купить")
    Пробовал в (/home/nskrgs/public_html/catalog/view/theme/otp771/template/module/latest.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"><?if((int)$quantity!=0):?><input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button" /><?else:?><input type="button" value="<?php echo $button_predzakaz; ?>" id="button-cart" class="button" /><?endif?></div> жалуется на quantity подскажите что нужно делать и где?

    Не совсем понял как это работает, если не сложно разжуйте. Что сделал - создал текстовый файл закинул все в него, сменил разрешение на xml, закинул сюда public_html/vqmod/xml, vqmod не распознает, сильно не ругайте не совсем понимаю что нужно сделать.
     
  20. Майкл

    Майкл

    Регистрация:
    7 мар 2013
    Сообщения:
    60
    Симпатии:
    4
    мне бы тоже было интересно возможно ли изменение на страницах категорий и главной