Ergo Опубликовано 10 февраля, 2016 Жалоба Поделиться Опубликовано 10 февраля, 2016 При принятии админом заказа, кол-во товара, что в этом заказе, автоматически уменьшается в базе магазина.Подскажите пожалуйста - в каком месте кода это делается.Есть нужда иметь возможность отключить эту опцию. Цитата Ссылка на сообщение Поделиться на другие сайты
Ergo Опубликовано 10 февраля, 2016 Автор Жалоба Поделиться Опубликовано 10 февраля, 2016 Вдогонку сопутствующий вопрос - как показывать цену на странице товара, даже если товар кончился?В этом случае $product->variants перестает содержать данные - в том числе и цену при выводе данных в product.tpl и product_block.tplГде это в коде логичнее поправить? Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 10 февраля, 2016 Жалоба Поделиться Опубликовано 10 февраля, 2016 При принятии админом заказа, кол-во товара, что в этом заказе, автоматически уменьшается в базе магазина.Подскажите пожалуйста - в каком месте кода это делается.Есть нужда иметь возможность отключить эту опцию. api/Orders.phppublic function open($order_id)public function close($order_id) Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 10 февраля, 2016 Жалоба Поделиться Опубликовано 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 Цитата Ссылка на сообщение Поделиться на другие сайты
Ergo Опубликовано 10 февраля, 2016 Автор Жалоба Поделиться Опубликовано 10 февраля, 2016 Kors, вы мой кумир!Благодарю! Цитата Ссылка на сообщение Поделиться на другие сайты
Al_Ary Опубликовано 16 февраля, 2016 Жалоба Поделиться Опубликовано 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, показываем "нет в наличии". На мой взгляд решение довольно простое, но возможно с "косяками" Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 16 февраля, 2016 Жалоба Поделиться Опубликовано 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 Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 16 февраля, 2016 Жалоба Поделиться Опубликовано 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 Вашему решению удалось превосходно.С "косяками" - не просто возможно, а гарантированно... Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.