daramal Опубликовано 27 февраля, 2016 Жалоба Поделиться Опубликовано 27 февраля, 2016 Добрый день, друзья! Возник такой момент. Нужно чтоб при нулевом количестве отображалась цена товара (также варианты, если они есть). Как такое сделать и где править, подскажите, пожалуйста. Спасибо за любую информацию. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 27 февраля, 2016 Жалоба Поделиться Опубликовано 27 февраля, 2016 Как ни странно, это не совсем просто.Иногда встречаются советы при выводе убрать значение in_stock => 1, но это чревато другими ошибками и не всегда работает верно. http://simpla-tuning.com/pokazyvat-tsenu-dazhe-esli-tovara-net-v-nalichii Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 27 февраля, 2016 Жалоба Поделиться Опубликовано 27 февраля, 2016 вот тут написано про то как вывести. + надо закрыть кнопку купить для таких вариантов. или выводить что нет товара Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 27 февраля, 2016 Автор Жалоба Поделиться Опубликовано 27 февраля, 2016 вот тут написано про то как вывести. + надо закрыть кнопку купить для таких вариантов. или выводить что нет товараKors и mishanya, спасибо за ответы. 'in_stock'=>true убрал, но корзину не получается скрыть, даже методами css )) У меня такой код сейчас, как тут можно закрыть кнопку "В корзину" ? {if $product->variants|count > 0} <!-- Выбор варианта товара --> <form class="variants" action="/cart"> {if $product->variant->compare_price} <div class="price-box"> <p class="old-price"> <span class="price-label">Regular Price:</span> <span class="price" id="old-price"><span>{$product->variant->compare_price|convert}</span></span> </p> <p class="special-price"> <span class="price-label">Special Price:</span> <span class="price" id="product-price"><span>{$product->variant->price|convert}</span> {$currency->sign|escape}</span> </p> </div> {else} <div class="price-box"> <span class="regular-price"> <span class="price" id="product-price"><span>{$product->variant->price|convert}</span> {$currency->sign|escape}</span> </span> </div> {/if} <!-- Выбор варианта товара --> {* Не показывать выбор варианта, если он один и без названия *} <select name="variant" {if $product->variants|count==1 && !$product->variant->name}style='display:none;'{/if}> {foreach $product->variants as $v} <option value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}"> {$v->name} </option> {/foreach} </select> <!-- Выбор варианта товара (The End) --> <div class="add-to-cart"> <div class="qty"> <label for="qty">К-во:</label> <input id="qty" class="input-text qty" type="text" title="Количество товара" value="1" maxlength="12" name="amount" /> </div> <button class="button btn-cart" title="В корзину" type="submit"> <i class="icon-basket"></i>В корзину </button> </div> </form> {/if} Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 27 февраля, 2016 Жалоба Поделиться Опубликовано 27 февраля, 2016 скойте кнопку методом ксс оберните кнопку в условие и добавте при этом условие класс со стилем display:none Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 27 февраля, 2016 Жалоба Поделиться Опубликовано 27 февраля, 2016 вам надо учесть, что у вас один вариант может быть в наличии а один из вариантов нет. соотвественно при переключении надо кнопку делать тоже невидимой. Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 27 февраля, 2016 Автор Жалоба Поделиться Опубликовано 27 февраля, 2016 скойте кнопку методом ксс оберните кнопку в условие и добавте при этом условие класс со стилем display:noneДелаю так, но не выходит (( <div class="add-to-cart" style="{if $product->variants|count == 0}display:none;{/if}"> <div class="qty"> <label for="qty">К-во:</label> <input id="qty" class="input-text qty" type="text" title="Количество товара" value="1" maxlength="12" name="amount" /> </div> <button class="button btn-cart" title="В корзину" type="submit"> <i class="icon-basket"></i>В корзину </button> </div> Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 27 февраля, 2016 Автор Жалоба Поделиться Опубликовано 27 февраля, 2016 Ну или вот так ставлю условие, все равно ((: {if $product->variants|count > 0} <div class="add-to-cart"> <div class="qty"> <label for="qty">К-во:</label> <input id="qty" class="input-text qty" type="text" title="Количество товара" value="1" maxlength="12" name="amount" /> </div> <button class="button btn-cart" title="В корзину" type="submit"> <i class="icon-basket"></i>В корзину </button> </div> {else} <div class="add-to-cart" style="display:none;"> </div> {/if} Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 27 февраля, 2016 Жалоба Поделиться Опубликовано 27 февраля, 2016 Т.е. сначала вы убили проверку, и сделали вывод ВСЕХ вариантов, с любой ценой и количеством на складе...Долго радовались и праздновали)))А потом оказалось, что проверка - не работает Интересно, почему??? Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 27 февраля, 2016 Автор Жалоба Поделиться Опубликовано 27 февраля, 2016 А есть ли другие варианты? Поделитесь, пожалуйста. Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 27 февраля, 2016 Жалоба Поделиться Опубликовано 27 февраля, 2016 В принципе, есть другой вариант, но он достаточно геморройный, плюс не известно, подойдет или нет...Писать инструкции я точно не буду, максимум - могу натолкнуть на правильный путь)) Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 27 февраля, 2016 Жалоба Поделиться Опубликовано 27 февраля, 2016 Самый простой вариант - обойти массив вариантов ДВА раза.Точнее, обход идет ДВА раза только если есть вариант с количеством на складе, отличным от нуля.Если нет таких вариантов - выводится цена первого варианта и все (чисто как пример)Если такие варианты есть - выводится цена первого из них, выбор вариантов и кнопка В корзину. Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 27 февраля, 2016 Жалоба Поделиться Опубликовано 27 февраля, 2016 Ну, скажем так: Если вы хотите очень подробную инстукцию- я не буду этого делать.Могу подсказать, натолкнуть, помочь... Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 1 марта, 2016 Автор Жалоба Поделиться Опубликовано 1 марта, 2016 К сожалению, не получается ((Жаль, что никто не делится Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 1 марта, 2016 Жалоба Поделиться Опубликовано 1 марта, 2016 Делаю так, но не выходит (( <div class="add-to-cart" style="{if $product->variants|count == 0}display:none;{/if}"> <div class="qty"> <label for="qty">К-во:</label> <input id="qty" class="input-text qty" type="text" title="Количество товара" value="1" maxlength="12" name="amount" /> </div> <button class="button btn-cart" title="В корзину" type="submit"> <i class="icon-basket"></i>В корзину </button> </div> вы не поняли, теперь вам нет смысла ставить условие {if $product->variants|count == 0} или {if $product->variants|count > 0}у вас всегда теперь количество вариантов больше 0. вам надо проверять $product->variant->stock <div class="add-to-cart" style="{if $product->variant->stock>0}display:none;{/if}"> <div class="qty"> <label for="qty">К-во:</label> <input id="qty" class="input-text qty" type="text" title="Количество товара" value="1" maxlength="12" name="amount" /> </div> <button class="button btn-cart" title="В корзину" type="submit"> <i class="icon-basket"></i>В корзину </button> </div> а дальше если меняется вариант в селекте скрывать или показывать этот же блок Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 1 марта, 2016 Автор Жалоба Поделиться Опубликовано 1 марта, 2016 вы не поняли, теперь вам нет смысла ставить условие {if $product->variants|count == 0} или {if $product->variants|count > 0}у вас всегда теперь количество вариантов больше 0. вам надо проверять $product->variant->stock <div class="add-to-cart" style="{if $product->variant->stock>0}display:none;{/if}"> <div class="qty"> <label for="qty">К-во:</label> <input id="qty" class="input-text qty" type="text" title="Количество товара" value="1" maxlength="12" name="amount" /> </div> <button class="button btn-cart" title="В корзину" type="submit"> <i class="icon-basket"></i>В корзину </button> </div> а дальше если меняется вариант в селекте скрывать или показывать этот же блокСпасибо огромное за ответ! Очень выручили.Я вместо условия {if $product->variants|count > 0} поставил {if $product->variant->stock > 0} и все встало на свои места )) Спасибо еще раз! Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 1 марта, 2016 Жалоба Поделиться Опубликовано 1 марта, 2016 Спасибо огромное за ответ! Очень выручили.Я вместо условия {if $product->variants|count > 0} поставил {if $product->variant->stock > 0} и все встало на свои места )) Спасибо еще раз! да, это я и написал, только если у вас больше 1го варианта, нужно дописать еще переключение на js. потому что например у вас может не быть первого варианта а второй есть в наличии и тогда надо будет отобразить корзину Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 1 марта, 2016 Автор Жалоба Поделиться Опубликовано 1 марта, 2016 да, это я и написал, только если у вас больше 1го варианта, нужно дописать еще переключение на js. потому что например у вас может не быть первого варианта а второй есть в наличии и тогда надо будет отобразить корзинуСпасибо, дружище! Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 1 марта, 2016 Автор Жалоба Поделиться Опубликовано 1 марта, 2016 да, это я и написал, только если у вас больше 1го варианта, нужно дописать еще переключение на js. потому что например у вас может не быть первого варианта а второй есть в наличии и тогда надо будет отобразить корзинуя делаю так <select name="variant" {if $product->variants|count==1 && !$product->variant->name}style='display:none;'{/if}> {foreach $product->variants as $v} <option style="{if $product->variant->stock>0}display:none;{/if}" value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}"> {$v->name} </option> {/foreach} </select> и ничего не получается. в этом случае option весь пустой.Как сделать, чтоб при нулевом количестве к примеру 1-го варианта товара, а 2-й есть в наличии, чтоб отсутствующий вариант не выводился ? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 1 марта, 2016 Жалоба Поделиться Опубликовано 1 марта, 2016 я делаю так <select name="variant" {if $product->variants|count==1 && !$product->variant->name}style='display:none;'{/if}> {foreach $product->variants as $v} <option style="{if $product->variant->stock>0}display:none;{/if}" value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}"> {$v->name} </option> {/foreach} </select> и ничего не получается. в этом случае option весь пустой.Как сделать, чтоб при нулевом количестве к примеру 1-го варианта товара, а 2-й есть в наличии, чтоб отсутствующий вариант не выводился ? потому что так нельзя делать. {$v_count=$product->variants|count} {$v_stock=0} <select name="variant" {if $v_count==1 && !$product->variant->name}style='display:none;'{/if}> {foreach $product->variants as $v} {if $v->stock>0} {$v_stock=$v_stock+1} <option value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}"> {$v->name} </option> {/if} {/foreach} </select> {if $v_stock==0}<script>$( "select[name=variant]" ).hide();</script>{/if} так будут выводится только те варианты у которых наличие больше 0. если таких вариантов нет (все варианты не в наличии) то селект будет скрыватся. проверьте. Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 1 марта, 2016 Автор Жалоба Поделиться Опубликовано 1 марта, 2016 Добился сделать так <select name="variant" {if $product->variants|count==1 && !$product->variant->name}style='display:none;'{/if}> {foreach $product->variants as $v} <option style="{if $v->stock==0}display:none;{/if}" value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}"> {$v->name} </option> {/foreach} </select> но в этом случаи в Админке если 1-й вариант 0 шт., то на сайте показывает, что товара нет вообще, но при этом селекты присутствуют и отображаются не верно. НО! если не ставить на 1-й вариант 0 шт., а ставить на 2-й и т.п., то тогда все отлично работает. и отсутствующие варианты хорошо убираются в селектах. То есть получается у нас скрипт сейчас реагирует на 1-й вариант товара.Как сделать иначе, чтоб не было зависимость от 1-го варианта? Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 1 марта, 2016 Автор Жалоба Поделиться Опубликовано 1 марта, 2016 потому что так нельзя делать. {$v_count=$product->variants|count} {$v_stock=0} <select name="variant" {if $v_count==1 && !$product->variant->name}style='display:none;'{/if}> {foreach $product->variants as $v} {if $v->stock>0} {$v_stock=$v_stock+1} <option value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}"> {$v->name} </option> {/if} {/foreach} </select> {if $v_stock==0}<script>$( "select[name=variant]" ).hide();</script>{/if} так будут выводится только те варианты у которых наличие больше 0. если таких вариантов нет (все варианты не в наличии) то селект будет скрыватся. проверьте.Спасибо большое. Ваш Вариант работает отлично, не реагирует на 1-й вариант, что я писал.Но теперь он не дружит с кнопкой "В корзину". У меня она идет после Вашего кода <div class="add-to-cart" style="{if $product->variant->stock==0}display:none;{/if}"> <div class="qty"> <label for="qty">К-во:</label> <input id="qty" class="input-text qty" type="text" title="Количество товара" value="1" maxlength="12" name="amount" /> </div> <button class="button btn-cart" title="В корзину" type="submit"> <i class="icon-basket"></i>В корзину </button> </div> Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 1 марта, 2016 Жалоба Поделиться Опубликовано 1 марта, 2016 Спасибо большое. Ваш Вариант работает отлично, не реагирует на 1-й вариант, что я писал.Но теперь он не дружит с кнопкой "В корзину". У меня она идет после Вашего кода <div class="add-to-cart" style="{if $product->variant->stock==0}display:none;{/if}"> <div class="qty"> <label for="qty">К-во:</label> <input id="qty" class="input-text qty" type="text" title="Количество товара" value="1" maxlength="12" name="amount" /> </div> <button class="button btn-cart" title="В корзину" type="submit"> <i class="icon-basket"></i>В корзину </button> </div> правильно это то о чем я выше писал. нужно при переключении селекта скрывать/выводить блок купить если товар есть в наличии или нет. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.