Ergo Posted February 10, 2016 Report Share Posted February 10, 2016 При принятии админом заказа, кол-во товара, что в этом заказе, автоматически уменьшается в базе магазина.Подскажите пожалуйста - в каком месте кода это делается.Есть нужда иметь возможность отключить эту опцию. Quote Link to post Share on other sites
Ergo Posted February 10, 2016 Author Report Share Posted February 10, 2016 Вдогонку сопутствующий вопрос - как показывать цену на странице товара, даже если товар кончился?В этом случае $product->variants перестает содержать данные - в том числе и цену при выводе данных в product.tpl и product_block.tplГде это в коде логичнее поправить? Quote Link to post Share on other sites
Kors Posted February 10, 2016 Report Share Posted February 10, 2016 При принятии админом заказа, кол-во товара, что в этом заказе, автоматически уменьшается в базе магазина.Подскажите пожалуйста - в каком месте кода это делается.Есть нужда иметь возможность отключить эту опцию. api/Orders.phppublic function open($order_id)public function close($order_id) Quote Link to post Share on other sites
Kors Posted February 10, 2016 Report Share Posted February 10, 2016 Вдогонку сопутствующий вопрос - как показывать цену на странице товара, даже если товар кончился?В этом случае $product->variants перестает содержать данные - в том числе и цену при выводе данных в product.tpl и product_block.tplГде это в коде логичнее поправить? Пробуйте во view/ProductView.php заменить foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v)на foreach($this->variants->get_variants(array('product_id'=>$product->id)) as $v) При этом возникают недостатки - можно отсутствующий товар положить в корзину.И аналогичные изменения надо делать для списка товаров... Вопрос время от времени всплывает на форуме. Но полностью хорошего простого решения пока не найдено.http://simpla-tuning.com/pokazyvat-tsenu-dazhe-esli-tovara-net-v-nalichii Quote Link to post Share on other sites
Ergo Posted February 10, 2016 Author Report Share Posted February 10, 2016 Kors, вы мой кумир!Благодарю! Quote Link to post Share on other sites
Al_Ary Posted February 16, 2016 Report Share Posted February 16, 2016 Вдогонку сопутствующий вопрос - как показывать цену на странице товара, даже если товар кончился?В этом случае $product->variants перестает содержать данные - в том числе и цену при выводе данных в product.tpl и product_block.tplГде это в коде логичнее поправить?Для этого надо чуть-чуть поломать api В файле api/Variants.php находим $variant_id_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL)'); И добавляем, чтобы и при нулевом значении, тоже думало, что товар in_stock, вот так: $variant_id_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL OR v.stock = 0)'); Получится что везде где товара 0, всё равно будет возможность отображать цену и отображать кнопочку "в корзину", поэтому везде в шаблонах надо изменить условия вывода кнопки, и надписи "нет в наличии". Стандартное: {if $product->variants|count > 0} <!-- Выбор варианта товара --> <form class="variants" action="/cart"> <table> {foreach $product->variants as $v} <tr class="variant"> <td> <input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/> </td> <td> {if $v->name}<label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if} </td> <td> {if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if} <span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span> </td> </tr> {/foreach} </table> <input type="submit" class="button" value="в корзину" data-result-text="добавлено"/> </form> <!-- Выбор варианта товара (The End) --> {else} Нет в наличии {/if} Меняем на: <!-- Выбор варианта товара --> <form class="variants" action="/cart"> <table> {foreach $product->variants as $v} <tr class="variant"> <td> <input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/> </td> <td> {if $v->name}<label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if} </td> <td> {if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if} <span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span> </td> </tr> {/foreach} </table> {if $product->variant->stock > 0} <input type="submit" class="button" value="в корзину" data-result-text="добавлено"/> {/if} </form> <!-- Выбор варианта товара (The End) --> {if $product->variant->stock = 0} Нет в наличии {/if} Получается удаляем стандартную проверку на заполненность массивна, потому что он у нас в любом случае будет заполнен, и вставляет два условия: в случае если товаров больше чем 0 (if $product->variant->stock > 0) — показываем кнопку заказа, в случае если количество товаров 0, показываем "нет в наличии". На мой взгляд решение довольно простое, но возможно с "косяками" Quote Link to post Share on other sites
mishanya Posted February 16, 2016 Report Share Posted February 16, 2016 Для этого надо чуть-чуть поломать api В файле api/Variants.php находим $variant_id_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL)'); И добавляем, чтобы и при нулевом значении, тоже думало, что товар in_stock, вот так: $variant_id_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL OR v.stock = 0)'); Получится что везде где товара 0, всё равно будет возможность отображать цену и отображать кнопочку "в корзину", поэтому везде в шаблонах надо изменить условия вывода кнопки, и надписи "нет в наличии". Получается удаляем стандартную проверку на заполненность массивна, потому что он у нас в любом случае будет заполнен, и вставляет два условия: в случае если товаров больше чем 0 (if $product->variant->stock > 0) — показываем кнопку заказа, в случае если количество товаров 0, показываем "нет в наличии". На мой взгляд решение довольно простое, но возможно с "косяками" а зачем? достаточно не передавать $filter['in_stock'] для метода get_variants в view/ProductView.php, view/ProductsView.php Quote Link to post Share on other sites
Kors Posted February 16, 2016 Report Share Posted February 16, 2016 1. Упоминаемая Вами строка 34 совсем не такая. То, что написано у Вас - смесь двух недалеко расположенных строк.2. Как заметил ранее mishanya, предложенное новое условие для строки 34(v.stock>0 OR v.stock IS NULL OR v.stock = 0)довольно бессмысленно, оно выполняется практически ВСЕГДА. Не выполняется лишь для v.stock<0, но это для Simpla - ситуация нештатная, которая при нормальной работе возникать не должна...3. Предложенное изменение в шаблоне - совсем негодное. Например,3.1 если у товара два варианта с кол-вами 0 и 7, то будет показано Нет в наличии.3.2 а если у товара два варианта с кол-вами 7 и 0, то будет показано В корзину.3.3 В то время как по сути 3.1 и 3.2 представляют ОДИНАКОВЫЕ ситуации.По моим наблюдения, ситуация 3.1 для владельцев магазинов просто нетерпима. И их можно понять - товар есть, а программист его прячет из-за своих фокусов... Для этого надо чуть-чуть поломать api ...На мой взгляд решение довольно простое, но возможно с "косяками" Поломать API Вашему решению удалось превосходно.С "косяками" - не просто возможно, а гарантированно... Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.