error_in_line Posted July 29, 2009 Report Share Posted July 29, 2009 Hallo Forenmitglieder, wir möchten in unserem Shop (3.04 SP 2.1) den Artikel Status automatisch auf inaktiv setzen ab einem Lagerbestand <1, da viele Einzelstücke verkauft werden. Dazu habe ich mir die checkout_process.php angesehen, wo der Artikelbestand bei der Bestellung reduziert wird. Wie ich mit mysql den status inaktiv setze, weiß ich : update products set products_quantity =1, products_status = 0 where products_id =1; select products_id, products_quantity,products_status from products where products_id =1; Aber wie muß das in diesen Loop eingebaut werden???? Bitte gebt mal einen Tipp, Danke! checkout_process.php for ($i = 0, $n = sizeof($order->products); $i < $n; $i ++) { // Stock Update - Joao Correia if (STOCK_LIMITED == 'true') { if (DOWNLOAD_ENABLED == 'true') { $stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename FROM ".TABLE_PRODUCTS." p LEFT JOIN ".TABLE_PRODUCTS_ATTRIBUTES." pa ON p.products_id=pa.products_id LEFT JOIN ".TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD." pad ON pa.products_attributes_id=pad.products_attributes_id WHERE p.products_id = '".xtc_get_prid($order->products[$i]['id'])."'"; // Will work with only one option for downloadable products // otherwise, we have to build the query dynamically with a loop $products_attributes = $order->products[$i]['attributes']; if (is_array($products_attributes)) { $stock_query_raw .= " AND pa.options_id = '".$products_attributes[0]['option_id']."' AND pa.options_values_id = '".$products_attributes[0]['value_id']."'"; } $stock_query = xtc_db_query($stock_query_raw); } else { $stock_query = xtc_db_query("select products_quantity from ".TABLE_PRODUCTS." where products_id = '".xtc_get_prid($order->products[$i]['id'])."'"); } if (xtc_db_num_rows($stock_query) > 0) { $stock_values = xtc_db_fetch_array($stock_query); // do not decrement quantities if products_attributes_filename exists if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) { $stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty']; } else { $stock_left = $stock_values['products_quantity']; } xtc_db_query("update ".TABLE_PRODUCTS." set products_quantity = '".$stock_left."' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'"); if (($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false')) { xtc_db_query("update ".TABLE_PRODUCTS." set products_status = '0' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'"); } } } [/php] Link to comment Share on other sites More sharing options...
ritchi Posted October 22, 2009 Report Share Posted October 22, 2009 Hallo Forum, das würde ich auch gerne umsetzten. Für etwas Hilfe wäre ich sehr dankbar. Grüße Ritchi Link to comment Share on other sites More sharing options...
error_in_line Posted February 21, 2010 Author Report Share Posted February 21, 2010 kurz & knapp: Die Artikel sollen bei Warenbestand = 0 angezeigt werden, mit oder ohne Preis einstellbar mittels Smarty im Template, aber der Einkauf soll erst bei weider aufgefüllten Lager möglich sein. die Idee der Lagerbestandsampel aufgreifen: z.B. hier: Warenbestands-Ampel mit xt:Commerce (gunnART - Grafik, Layout, Konzeption) sehr elegant der Smarty-Modifier, der ins Template kommt: Also: 0) Shop-Administrationsoberfläche > Konfiguration > Lagerverwaltungsoptionen > Einkaufen nicht vorrätiger Ware erlauben 1) neuer Ordner & neue Datei template/smarty/modifier.ProductsQuantity.php <?php // ------------------------------------------------------------------------------- // // SmartyModifier "StockImage_by_ProductsID" für xt:Commerce // Funktion: Anzeige einer Lagerbestands-Ampel // Version 1.0 (21. August 2007) // (c) Gunnar Tillmann // Weitere Infos: http://www.gunnart.de/?p=334 ------------------------------------------------------------------------------- // Getestet mit xt:Commerce 3.04, SP2.1 ------------------------------------------------------------------------------- // reduziert zu modifier.ProductsQuantity.php ------------------------------------------------------------------------------ // Code-Beispiele zum Einsatz im Template // {$PRODUCTS_ID|ProductsQuantity} // Für den Einsatz auf Produkt-Detail-Seiten // {$module_data.PRODUCTS_ID|ProductsQuantity} // Für den Einsatz in Auflistungen ------------------------------------------------------------------------------- function smarty_modifier_ProductsQuantity($ProdID) { if($ProdID) { $aufLagerQuery = xtDBquery(" SELECT products_quantity FROM ".TABLE_PRODUCTS." WHERE products_id = '".$ProdID."' "); $aufLagerQuery = xtc_db_fetch_array($aufLagerQuery,true); $Anzahl = $aufLagerQuery['products_quantity']; //return '<p>('.$Anzahl.')</p>'; return $Anzahl; } else { return false; } } ?> [/PHP]2) Ergänzung in der Datei shop/includes/classes/Smarty_2.6.14/Smarty.class.php [PHP] //NEU: Pfad zum PlugIn-Ordner, wo sich der smarty-modifier befindet, im aktiven Template! define('MY_TEMPLATE_PLUGINS', DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/smarty'); [/PHP]3) mittels SQL prüfen, ob überall dieselbe Templatevorlage genutzt wird: [HTML] #SQL select categories_id, categories_status, categories_template, listing_template from categories order by categories_template asc; [/HTML]ggf. template-vorlage einstellen: [HTML] #SQL UPDATE categories SET listing_template = 'product_listing_v1.html' WHERE listing_template = 'default'; [/HTML]4) # in den sprachdateien ergänzen: lang/german/lang_german.conf lang/german/lang_english.conf [HTML] [product_info] ausverkauft = 'at present not available' ausverkauft = 'derzeit nicht verfügbar' [/HTML]### box_whatsnew.html [HTML] {if ($PRODUCTS_ID|ProductsQuantity>0) }{$PRICE}{/if} [/HTML]### print_product_info.html neu: [HTML] {if ($PRODUCTS_ID|ProductsQuantity>0) }{$PRODUCTS_PRICE}{/if} [/HTML]### product_listing_v1.html [HTML] {if $module_data.PRODUCTS_ID|ProductsQuantity>0} <span class="product_listing_product_price"> {$module_data.PRODUCTS_PRICE}</span> <span class="product_listing_tax_info">{$module_data.PRODUCTS_TAX_INFO}</span> <span class="product_listing_shipping">{$module_data.PRODUCTS_SHIPPING_LINK|NoPopUp}</span> {else} <span class="product_listing_product_price">{#ausverkauft#}</span> {/if} [/HTML]### product_info_v1.html [HTML] {if ($PRODUCTS_ID|ProductsQuantity>0)} <table width="100%"> <tr> <td width="100%" style="padding-left:10px;"> <span class="product_info_product_price">{$PRODUCTS_PRICE}</span> <br> {if FALSE}<span class="product_info_tax_info">{$PRODUCTS_TAX_INFO}</span>{/if} {if $PRODUCTS_SHIPPING_LINK} <span class="product_info_shipping_link">{$PRODUCTS_SHIPPING_LINK}</span> {/if} </td> <td style="padding-left:10px;" align="right"> <table width="100%" border="0"> <tr> <td> {$ADD_QTY} </td> <td> {$ADD_CART_BUTTON} </td> </tr> </table> </td> </tr> </table> {else} <table width="100%"> <tr> <td width="100%" style="padding-left:10px;"> <span class="product_info_product_price">{#ausverkauft#} </span><br> <span class="product_info_tax_info"> </span> <span class="product_info_shipping_link"> </span> </td> <td style="padding-left:10px;" align="right"> <table width="100%" border="0"> <tr> <td> </td> <td> </td> </tr> </table> </td> </tr> </table> {/if} [/HTML] Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.