Witam, próbuję dostosować opencart 2.2.0.0. do swoich potrzeb i przeszukałem wszystkie fora ale nie znalazłem rozwiązania i może ktoś by mi pomógł (przy okazji może się komuś także przydać)
Sprzedaję towary w dużych ilościach i chciałbym aby już w wyborze kategorii można było wpisać ilość sztuk. Rozwiązałem to za pomocą znalezionego kodu. Musiałem w pliku catalog.tpl dokonać następujących zmian:
zamiast:
<div class="button-group">
<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
wkleić:
<input type="text" value="1" size="2" class="item-<?php echo $product['product_id']; ?>" />
<div class="button-group">
<button type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
oraz dodatkowo wkleić na końcu przed linijką footer ? lininka footer będzie wyglądać:
<script type="text/javascript"><!--
function addQtyToCart(product_id) {
var qty = $('.item-' + product_id).val();
if ((parseFloat(qty) != parseInt(qty)) || isNaN(qty)) {
qty = 1;
}
cart.add(product_id, qty);
}
//--></script>
<?php echo $footer; ?>
i to działa. Drugą sprawą chciałem aby już w widoku kategorii pokazywało że czegoś nie ma na stanie. Nie wiem dlaczego w orginalnym kodzie dopiero po wrzuceniu do koszyka, w koszyku klient dowiaduje się że czegoś nie ma - ale i z tym sobie poradziłem bo znalazłem rozszerzenie vqmod o kodzie:
<?xml version="1.0" encoding="utf-8"?>
<modification>
<name>Out of Stock Button</name>
<version>2.1</version>
<code>out_of_stock</code>
<author>REDS</author>
<link>//www.agenciaprai.com</link>
<!-- checks the stock in the controller //-->
<file path="catalog/controller/product/product.php">
<operation>
<search><![CDATA[if ($product_info['quantity'] <= 0) {]]></search>
<add position="before"><![CDATA[
$data['stock_quantity'] = $product_info['quantity'];
$data['text_out_of_stock'] = $product_info['stock_status'];
]]></add>
</operation>
</file>
<!-- search in product page position for raplace //-->
<file path="catalog/view/theme/*/template/product/product.tpl">
<operation>
<search><![CDATA[<button type="button" id="button-cart" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-primary btn-lg btn-block"><?php echo $button_cart; ?></button>]]></search>
<add position="replace"><![CDATA[<?php if ($stock_quantity < 1) { ?>
<button type="button" id="button-cart" disabled="disabled" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-primary btn-lg btn-block"><?php echo $text_out_of_stock; ?></button>
<?php } else { ?>
<button type="button" id="button-cart" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-primary btn-lg btn-block"><?php echo $button_cart; ?></button>
<?php }?>]]></add>
</operation>
<operation>
<search><![CDATA[<input type="text" name="quantity" value="<?php echo $minimum; ?>" size="2" id="input-quantity" class="form-control" />]]></search>
<add position="replace"><![CDATA[<?php if ($stock_quantity > 1) { ?>
<input type="text" name="quantity" value="<?php echo $minimum; ?>" size="2" id="input-quantity" class="form-control" />
<?php }?>]]></add>
</operation>
<operation>
<search><![CDATA[<label class="control-label" for="input-quantity"><?php echo $entry_qty; ?></label>]]></search>
<add position="replace"><![CDATA[<?php if ($stock_quantity > 1) { ?>
<label class="control-label" for="input-quantity"><?php echo $entry_qty; ?></label>
<?php }?>]]></add>
</operation>
</file>
<!-- search in category position for replace //-->
<file path="catalog/controller/product/category.php">
<operation>
<search><![CDATA[$data['products'][] = array(]]></search>
<add position="after"><![CDATA['quantity' => $result['quantity'],
'text_out_of_stock' => $result['stock_status'],
]]></add>
</operation>
</file>
<file path="catalog/view/theme/*/template/product/category.tpl">
<operation>
<search><![CDATA[<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>]]></search>
<add position="replace"><![CDATA[<?php if ($product['quantity'] < 1) { ?>
<button type="button" disabled="disabled" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-warning"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $product['text_out_of_stock']; ?></span></button>
<?php } else { ?>
<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
<?php } ?>]]></add>
</operation>
</file>
<!-- note: You can duplicate this part for other modules to be used in the store //-->
<!-- search in module featured for replace //-->
<file path="catalog/controller/module/featured.php">
<operation>
<search><![CDATA[$data['products'][] = array(]]></search>
<add position="after"><![CDATA['quantity' => $product_info['quantity'],
'text_out_of_stock' => $product_info['stock_status'],
]]></add>
</operation>
</file>
<file path="catalog/view/theme/*/template/module/featured.tpl">
<operation>
<search><![CDATA[<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>]]></search>
<add position="replace"><![CDATA[<?php if ($product['quantity'] < 1) { ?>
<button type="button" disabled="disabled" onclick="cart.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-warning"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $product['text_out_of_stock']; ?></span></button>
<?php } else { ?>
<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
<?php } ?>]]></add>
</operation>
</file>
<!-- note: You can duplicate this part for other modules to be used in the store //-->
<!-- search ins search store replace buttom //-->
<file path="catalog/controller/product/search.php">
<operation>
<search><![CDATA[$data['products'][] = array(]]></search>
<add position="after"><![CDATA['quantity' => $result['quantity'],
'text_out_of_stock' => $result['stock_status'],
]]></add>
</operation>
</file>
<file path="catalog/view/theme/*/template/product/search.tpl">
<operation>
<search><![CDATA[<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>]]></search>
<add position="replace"><![CDATA[<?php if ($product['quantity'] < 1) { ?>
<button type="button" disabled="disabled" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-warning"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $product['text_out_of_stock']; ?></span></button>
<?php } else { ?>
<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
<?php } ?>]]></add>
</operation>
</file>
</modification>
i to też działa z tym że musiałem zamienić w pliku xml linijkę
<button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
na
<button type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?>
bo tak wygląda linijka po wprowadzeniu wyboru ilości do kategorii.
I problem polega na tym że
Guzik się blokuje gdy nie ma czegoś na stanie - działa , wybór ilości się pokazuje - ok ale już w wyborze ilości czy wpiszę 1 czy 100 i tak dodaje 1 - usunę plik xml wybór ilości działa, przy pliku xml przestaje działać wybór ilości = na pewno trzeba te dwa kody jakoś połączyć ze sobą tak, aby dodatkowy plik xml nie przeszkadzał w dodawaniu ilości.
Ma ktoś jakiś pomysł aby mi pomóc, albo ma inne prostrze rozwiązanie, wydaje mi się że to jakaś prosta sprawa ale nie jestem biegły w takich kodach.
Z góry byłbym wdzięczny bo siedzę już trzeci dzień i nie mogę się z tym uporać. Dziwię się że tak mało osób nie chcę aby się blokował guzik do koszyka gdy nie ma jakiegoś towaru na stanie...