Noxter Опубликовано 21 февраля, 2016 Жалоба Поделиться Опубликовано 21 февраля, 2016 (изменено) Супер. Жду))Обновил статью. Изменено 21 февраля, 2016 пользователем Noxter Цитата Ссылка на сообщение Поделиться на другие сайты
Tarzan Опубликовано 21 февраля, 2016 Жалоба Поделиться Опубликовано 21 февраля, 2016 Обновил статью.Вот если бы еще и меняло скидку на варианты {if $product->variant->compare_price > 0} Скидка: {floor(abs(100-{$product->variant->price}/($product->variant->compare_price)*100))}% {/if} Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 21 февраля, 2016 Жалоба Поделиться Опубликовано 21 февраля, 2016 Вот если бы еще и меняло скидку на варианты {if $product->variant->compare_price > 0} Скидка: {floor(abs(100-{$product->variant->price}/($product->variant->compare_price)*100))}% {/if}При смене варианта меняется старая и обычная цена, % скидки не меняется, это не всем магазинам нужно. Вы можете расширить скрипт дописав в <option> нужные параметры, а также дописав html + JS, смотрите как сделано для data-price и делайте по аналогии. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 21 февраля, 2016 Жалоба Поделиться Опубликовано 21 февраля, 2016 При смене варианта меняется старая и обычная цена, % скидки не меняется Очевидно, что еще как меняется, так как % скидки высчитывается по приведенной формуле... А еще автору статьи хорошо бы проявить заботу о читателях, и обновить устаревшую конструкцию $('select[name=variant]').live('change', function(){ потому как у пользователей современных версий JQuery это просто не работает. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 21 февраля, 2016 Жалоба Поделиться Опубликовано 21 февраля, 2016 Вот если бы еще и меняло скидку на варианты {if $product->variant->compare_price > 0} Скидка: {floor(abs(100-{$product->variant->price}/($product->variant->compare_price)*100))}% {/if} Пробуйте так: {if $product->variants|count>0} <form class="variants" action="/cart"> <span class="prc-new">{$product->variant->price|convert} {$currency->sign|escape}</span> <span class="prc-old">{$product->variant->compare_price|convert} {$currency->sign|escape}</span> <span class="prc-discount">{if $product->variant->compare_price > 0} Скидка: {floor(abs(100-{$product->variant->price}/($product->variant->compare_price)*100))}%{/if}</span> {if $product->variants|count>1} <select name="variant"> {foreach $product->variants as $v} <option value="{$v->id}" data-price="{$v->price|convert} {$currency->sign|escape}" data-compare-price="{$v->compare_price|convert} {$currency->sign|escape}" data-discount="{if $v->compare_price > 0} Скидка: {floor(abs(100-{$v->price}/($v->compare_price)*100))}%{/if}">{$v->name}</option> {/foreach} </select> {else} <input type="radio" name="variant" value="{$product->variant->id}" checked style="display:none!important"/> {/if} <input type="submit" value="в корзину" class="button" data-result-text="добавлено"/> </form> {else} Нет в наличии {/if} {literal} <script> // Выбор варианта $('select[name=variant]').on('change', function(){ price = $(this).find('option:selected').attr('data-price'); compare_price = $(this).find('option:selected').attr('data-compare-price'); discount = $(this).find('option:selected').attr('data-discount'); $(this).closest('form.variants').find('.prc-new').html(price); $(this).closest('form.variants').find('.prc-old').html(compare_price); $(this).closest('form.variants').find('.prc-discount').html(discount); }); </script> {/literal} Цитата Ссылка на сообщение Поделиться на другие сайты
klonzz Опубликовано 21 февраля, 2016 Жалоба Поделиться Опубликовано 21 февраля, 2016 Обновил статью.Спасибо все работает. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 21 февраля, 2016 Жалоба Поделиться Опубликовано 21 февраля, 2016 Очевидно, что еще как меняется, так как % скидки высчитывается по приведенной формуле...Ничего как раз и не меняется т.к. в моей статье не используется формула вычисления процента скидки. Неужели это по коду не видно или очередной доеб без повода?А еще автору статьи хорошо бы проявить заботу о читателях, и обновить устаревшую конструкцию $('select[name=variant]').live('change', function(){ потому как у пользователей современных версий JQuery это просто не работает.Во первых рассчитано на тех кто использует стандартный шаблон в котором jQuery версии 1.7, во вторых jQuery постоянно обновляется и я не собираюсь бегать за этими обновлениями и постоянно переписывать статью. Что по твоему должно быть в статье для пользователей jQuery версии 1.7 если я статью обновлю до последней версии jQuery? Писать новую статью? Корс не занимайся хуйней. Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 17 июля, 2016 Жалоба Поделиться Опубликовано 17 июля, 2016 (изменено) А как сделать так, что при выборе варианта товара, менялся и артикул?Сейчас, к примеру у товару у которого три варианта и для каждого есть свой артикул выводятся списком три артикла. В шаблоне артикул вывожу вот так: {foreach from=$product->variants item=variant} <div class="article">Артикул: - {$variant->sku} </div> {/foreach} Изменено 17 июля, 2016 пользователем motya88 Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 19 сентября, 2016 Жалоба Поделиться Опубликовано 19 сентября, 2016 Up! Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 23 января, 2019 Жалоба Поделиться Опубликовано 23 января, 2019 (изменено) JS скрипт: // Выбор варианта $('select[name=variant]').live('change', function(){ price = $(this).find('option:selected').attr('data-price'); compare_price = ''; if(typeof $(this).find('option:selected').attr('data-compare-price') == 'string') compare_price = $(this).find('option:selected').attr('data-compare-price'); $(this).closest('form.variants').find('.prc-new').html(price); $(this).closest('form.variants').find('.prc-old').html(compare_price); return false; }); Сама разметка html: <!-- Выбор варианта товара --> <form class="variants" action="/cart"> <div class="price"> <div class="prc-old"> {$product->variant->compare_price|convert} {$currency->sign|escape} </div> <div class="prc-new"> {$product->variant->price|convert} {$currency->sign|escape} </div> </div> <div class="cart"> {if $product->variants|count > 0} {if $product->variants|count>1} <select name="variant"> {foreach $product->variants as $v} <option value="{$v->id}" data-price="{$v->price|convert} {$currency->sign|escape}" data-compare-price="{$v->compare_price|convert} {$currency->sign|escape}">{$v->name}</option> {/foreach} </select> {else} <input name="variant" value="{$product->variant->id}" type="radio" checked style="display:none!important;"/> {/if} <input class="button" type="submit" value="В корзину"/> {else} Нет в наличии {/if} </div> </form> <!-- end --> А если получить цену товара нужно без руб. Регулярным выражением это делать?Просто изначально цена просто цифрой 200.00 , при изменении варианта уже цена приходит в формате 200.00 руб Изменено 23 января, 2019 пользователем Kami Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 23 января, 2019 Жалоба Поделиться Опубликовано 23 января, 2019 Вот это вот надо убрать, и будет чена без рублейhttp://prntscr.com/mb0edx Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 23 января, 2019 Жалоба Поделиться Опубликовано 23 января, 2019 Вот это вот надо убрать, и будет чена без рублей http://prntscr.com/mb0edx+ Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 24 января, 2019 Жалоба Поделиться Опубликовано 24 января, 2019 Вот это вот надо убрать, и будет чена без рублейhttp://prntscr.com/mb0edx супер, скажите добавил input количество, прописал все что нужно в ajax_cart.js . Все работает, но нужна такая фича, Есть цена за товар и общая цена покупки, цена за товар меняется при выборе вариантов, что реализовано выше, а при изменении количества должна меняться итоговая сумма без перезагрузки страницыя так понимаю просто на js создать переменную total_price , а возле инпута сделать 2 span к примеру + и -и при клике на него цену умножать на количество. подскажите как в техническом плане реализовать в той же функции что и выше. Цитата Ссылка на сообщение Поделиться на другие сайты
crfxtr123 Опубликовано 13 сентября, 2019 Жалоба Поделиться Опубликовано 13 сентября, 2019 Здравствуйте , подскажите, если у варианта кол-во 0 , то как сделать ,чтоб его не показывало в списке на карточке товара.? <form class="variants single_cart_form" data-id="{$product->id}" data-name="{$product->name}"> <div class="product_options buttons_added clearfix"> <label class="orderby_label product_option_con f_left {if $product->variants|count == 1} hidden{/if}"> <select name="variant" id="{$prefix}variant_{$product->id}" class="orderby" data-productid="{$product->id}"> {foreach $product->variants as $v} <option value="{$v->id}" data-price="{$v->price|convert} {$currency->sign|escape}" {if $v->compare_price} data-compare="{$v->compare_price|convert} {$currency->sign|escape}"{/if} {if $v->name} data-name="{$v->name}"{/if} {if $product->variant->id==$v->id}selected{/if} >{$v->name}</option> {/foreach} </select> </label> <div class="quantity_controll_con f_left"> <input type="button" value="-" class="quantity_controll minus"> <input type="number" step="1" min="1" name="amount" value="1" title="Количество" class="input-text" size="4"> <input type="button" value="+" class="quantity_controll plus"> </div> <button type="submit" class="send_button f_left"><i class="ico-cart"></i>В корзину</button> </div> </form> Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 13 сентября, 2019 Жалоба Поделиться Опубликовано 13 сентября, 2019 Здравствуйте , подскажите, если у варианта кол-во 0 , то как сделать ,чтоб его не показывало в списке на карточке товара.? <form class="variants single_cart_form" data-id="{$product->id}" data-name="{$product->name}"> <div class="product_options buttons_added clearfix"> <label class="orderby_label product_option_con f_left {if $product->variants|count == 1} hidden{/if}"> <select name="variant" id="{$prefix}variant_{$product->id}" class="orderby" data-productid="{$product->id}"> {foreach $product->variants as $v} <option value="{$v->id}" data-price="{$v->price|convert} {$currency->sign|escape}" {if $v->compare_price} data-compare="{$v->compare_price|convert} {$currency->sign|escape}"{/if} {if $v->name} data-name="{$v->name}"{/if} {if $product->variant->id==$v->id}selected{/if} >{$v->name}</option> {/foreach} </select> </label> <div class="quantity_controll_con f_left"> <input type="button" value="-" class="quantity_controll minus"> <input type="number" step="1" min="1" name="amount" value="1" title="Количество" class="input-text" size="4"> <input type="button" value="+" class="quantity_controll plus"> </div> <button type="submit" class="send_button f_left"><i class="ico-cart"></i>В корзину</button> </div> </form> {if $v->price != 0} ....{/if} Цитата Ссылка на сообщение Поделиться на другие сайты
crfxtr123 Опубликовано 14 сентября, 2019 Жалоба Поделиться Опубликовано 14 сентября, 2019 (изменено) {if $v->price != 0} ....{/if}а куда вставить в код, чтоб выполняло правило? только не ругайтесь))){if $v->price != 0} ....{/if} - это разве не цена? Изменено 14 сентября, 2019 пользователем crfxtr123 Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 14 сентября, 2019 Жалоба Поделиться Опубликовано 14 сентября, 2019 а куда вставить в код, чтоб выполняло правило? только не ругайтесь))){if $v->price != 0} ....{/if} - это разве не цена? Это обертка означает условие -- Если цена не равна 0 то выводить код который указан взамен многоточий.. Тут ума не надо в какое место вставить мой пример Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.