De5pro Posted October 10, 2015 Report Share Posted October 10, 2015 (edited) Имеется вот такой код JS function changeColor(){ var sizes = $('#color option:selected').attr('rel-size').split(','); $('#size option').hide(); $('#size option').each(function () { if($.inArray($(this).val(), sizes) != -1) { $(this).show(); } }); $('#size option').attr('selected', ''); $('#size option:visible:first').attr('selected', 'selected'); И код HTML {if $product->colors|count > 1} <tr{if $product->variants|count<2} style="display:none;"{/if}> <td>Цвета:</td> <td> <select id="color"> {foreach $product->colors as $k=>$v}{if $k!=''}<option rel-size="{','|join:$v}" rel-image="{$product->image_ids[$k]}">{$k}</option>{/if}{/foreach} </select> </td> </tr> {/if} <tr{if $product->variants|count<2} style="display:none;"{/if}> <td>Размеры:</td> <td> <select id="size" name="variant"> {foreach $product->variants as $v}<option value="{$v->id}">{$v->name}</option>{/foreach} </select> </td> </tr> Функционал JS:При выборе цвета во втором селекторе появляется размер(Без дублей) привязанный к цвету .Помогите пожалуйста переписать код JS под "радиокнопку".Только , что бы при выборе размера появлялся цвет.И не было дублей .Пытался таким JS: $(function() { $(".variants li").live("click", function(){ variant = $(this).find('input').data('id'); color = $(this).find('input').data('color'); $('label.color').html(color); }); }); HTML: <form class="variants" action="/cart"> <a>Размер:</a> {foreach $product->variants as $v} <div class="lol"> <ul> <li> <input id="product_{$v->id}" data-color="$v=>color" data-id="{$v->id}" name="variant" value="{$v->id}" type="radio"/>{if $v->name}<label for="product_{$v->id}"></label>{/if} </li> </ul> </div> {/foreach} <a>Цвет:</a> {foreach $product->colors as $k=>$v} {if $k!=''} <div class="lol"> <ul> <li> <input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio"/>{if $v->name}<label class="color" for="product_{$v->id}"></label>{/if} </li> </ul> </div> {/if} {/foreach} Пытался сам но не работает .Купить готовое возможности нету .Помогите кто чем сможет . Edited October 10, 2015 by De5pro Quote Link to post Share on other sites
Noxter Posted October 10, 2015 Report Share Posted October 10, 2015 Купить готовое возможности нету . Да кому Вы врете?В таком случае стоит полагать что вам и магазин нечем содержать.Напрашивается вопрос: на кой черт Вам тот магазин тогда?Денег у него нет... Во пошел народ офигевший. Quote Link to post Share on other sites
Kors Posted October 10, 2015 Report Share Posted October 10, 2015 Пытался сам но не работает .Купить готовое возможности нету .Помогите кто чем сможет .В этом местеdata-color="$v=>color"у Вас в миниатюрном тексте внутри кавычек аж две ошибки... В давние детские годы была популярной острота "Подайте слепому на телевизор"... Quote Link to post Share on other sites
De5pro Posted October 10, 2015 Author Report Share Posted October 10, 2015 Да кому Вы врете?В таком случае стоит полагать что вам и магазин нечем содержать.Напрашивается вопрос: на кой черт Вам тот магазин тогда?Денег у него нет... Во пошел народ офигевший.Этот сайт я делаю не для себя . Прежде чем утверждать подавите в себе закомплексованность скрытаю , подумайте потом пишите . А вы уже заглянули в мой кошелек ? Quote Link to post Share on other sites
Noxter Posted October 10, 2015 Report Share Posted October 10, 2015 А вы уже заглянули в мой кошелек ?Мне ну нужно этого делать, о своем недостатке средств Вы сообщили сами, вот цитирую:Этот сайт я делаю не для себя . Если Вы сайт делаете не для себя значит кто-то Вам за сайт заплатит, если не заплатит то Вы скорее всего чей-то раб (фигурально) работающий за еду. Quote Link to post Share on other sites
mishanya Posted October 10, 2015 Report Share Posted October 10, 2015 Пытался сам но не работает .Купить готовое возможности нету .Помогите кто чем сможет . этот участок кода data-color="$v=>color" нужно заменить на data-color="{$v->color}" и смотреть дальше есть ли ошибки. Quote Link to post Share on other sites
Kors Posted October 10, 2015 Report Share Posted October 10, 2015 Сразу бросается в глаза, что$('label.color').html(color);явно не даст правильного результатат, так как изменит НЕСКОЛЬКО текстов у всех радиокнопок цвета. И у самих радиокнопок вначале HTML формируется странно, без подписей. Может, конечно, подписи потом формирует неуказанный JS-скрипт, но это маловероятно... Полагаю, на этом ошибки не кончатся... Похоже, ТС где-то что-то скопировал и отредактировал методом тыка без особого понятия... mishanya имеет в данной теме широкий фронт работ по исправлению... Quote Link to post Share on other sites
Consult Posted October 10, 2015 Report Share Posted October 10, 2015 Да кому Вы врете?В таком случае стоит полагать что вам и магазин нечем содержать.Напрашивается вопрос: на кой черт Вам тот магазин тогда?Денег у него нет... Во пошел народ офигевший.Запарили своей желчью.Не нравится? Проходите мимо, епт. Quote Link to post Share on other sites
Noxter Posted October 10, 2015 Report Share Posted October 10, 2015 Запарили своей желчью.Не нравится? Проходите мимо, епт.Тебя это абсолютно не касается, проходи сам мимо, идиот. Quote Link to post Share on other sites
De5pro Posted October 11, 2015 Author Report Share Posted October 11, 2015 Мне ну нужно этого делать, о своем недостатке средств Вы сообщили сами, вот цитирую: Если Вы сайт делаете не для себя значит кто-то Вам за сайт заплатит, если не заплатит то Вы скорее всего чей-то раб (фигурально) работающий за еду.И опять не угодали . Quote Link to post Share on other sites
seez Posted November 5, 2015 Report Share Posted November 5, 2015 1. Добавляем новое поле в таблицу s_variants ALTER TABLE `s_variants` ADD `size` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `name` 2. Правим simpla\design\html\protuct.tpl Перед <li class="variant_sku">Артикул</li> вставляем <li class="variant_sku">Размер</li> ниже перед <li class="variant_sku"> <input name="variants[sku][]" type="text" value="{$variant->sku|escape}" /></li> вставляем <li class="variant_sku"> <input name="variants[]" type="text" value="{$variant->size|escape}" /></li> еще ниже перед <li class="variant_sku"><input name="variants[sku][]" type="" value="" /></li> вставляем <li class="variant_sku"><input name="variants[]" type="" value="" /></li> 3. Правим api\Variants.php Находим $query = $this->db->placehold("SELECT v.id, v.product_id , v.price, NULLIF(v.compare_price, 0) as compare_price, v.sku, IFNULL(v.stock, ?) as stock, (v.stock IS NULL) as infinity, v.name, v.attachment, v.position меняем $query = $this->db->placehold("SELECT v.id, v.product_id , v.price, NULLIF(v.compare_price, 0) as compare_price, v.sku, IFNULL(v.stock, ?) as stock, (v.stock IS NULL) as infinity, v.name, v.size, v.attachment, v.position ниже находим $query = $this->db->placehold("SELECT v.id, v.product_id , v.price, NULLIF(v.compare_price, 0) as compare_price, v.sku, IFNULL(v.stock, ?) as stock, (v.stock IS NULL) as infinity, v.name, v.attachment меняем $query = $this->db->placehold("SELECT v.id, v.product_id , v.price, NULLIF(v.compare_price, 0) as compare_price, v.sku, IFNULL(v.stock, ?) as stock, (v.stock IS NULL) as infinity, v.name, v.size, v.attachment 4. Правим design\ваша тема\product.tpl после {if $product->variants|count > 0} вставляем {if $product->variant->size} <div class="variant_special_list"> <script type="text/javascript"> {literal} $(document).ready(function(){ $("#nap_select").change(function () { var napr_selected = $("#nap_select option:selected").val(); sizer_selected = $("#size_select option:selected").val(); datar = napr_selected+sizer_selected; $('.variant_radiobutton').attr('checked',false); $('#size_select option').removeClass('deactive'); $('#size_select option').each(function(n){ var size_not = $(this).attr('data-color'); if(napr_selected !== size_not){ $(this).addClass('deactive'); }else{ $("#size_select").prepend("<option selected='selected'>Выберите размер</option>"); $('.variants .button').attr('disabled', true); $('.select_varian').text('Выберите размер'); $('.select_price').text(' '); } }); }); }); {/literal} </script> <script type="text/javascript"> {literal} $(document).ready(function(){ $("#size_select").change(function () { var nap_selected = $("#nap_select option:selected").val(); size_selected = $("#size_select option:selected").val(); price_selected = $("#nap_select option:selected").attr("data-price"); data = nap_selected+size_selected; $('.variant_radiobutton[data-rel=+ data +]').attr('checked',true); $('.variants .button').attr('disabled', false); $('.select_varian').text(nap_selected +', размер '+size_selected); $('.select_price').text(price_selected); }); }); {/literal} </script> <ul class="list_variants"> <li class="napolnitel"> <select id="nap_select"> {foreach $product->variants as $v} <option value="{$v->name}" data-price="{$v->price|convert} {$currency->sign|escape}">{$v->name}</option> {/foreach} </select> </li> <li class="size"> <select id="size_select"> {foreach $product->variants as $v} <option value="{$v->size}" data-color="{$v->name}">{$v->size}</option> {/foreach} </select> </li> <li><span class="select_varian">{$product->variant->name}, размер {$product->variant->size}</span> <span class="select_price">{$product->variant->price|convert} {$currency->sign|escape}</span></li> </ul> </div> {else} <div class="variant_special_list"> <script type="text/javascript"> {literal} $(document).ready(function(){ $("#nap_select").change(function () { var nap_selected = $("#nap_select option:selected").val(); price_selected = $("#nap_select option:selected").attr("data-price"); $('.variant_radiobutton[data-color=+ nap_selected +]').attr('checked',true); $('.select_varian').text(nap_selected); $('.select_price').text(price_selected); }); }); {/literal} </script> <ul class="list_variants"> <li class="napolnitel"> <select id="nap_select"> {foreach $product->variants as $v} <option value="{$v->name}" data-price="{$v->price|convert} {$currency->sign|escape}">{$v->name}</option> {/foreach} </select> </li> <li> <span class="select_varian">{$product->variant->name}</span> <span class="select_price">{$product->variant->price|convert} {$currency->sign|escape}</span> </li> </ul> </div> {/if} 5. Правим design\css\style.css в самый низ добавляем строки #size_select option.deactive{ display: none; } .product form.variants table{ display: none; } 6. Правим api\Orders.php после if(!isset($purchase->variant_name) && !empty($variant)) $purchase->variant_name = $variant->name; добавляем if(!isset($purchase->size) && !empty($variant)) $purchase->size = $variant->size; 7. Правим design\ваша тема\cart.tpl находим {* Название товара *} <td class="name"> <a href="products/{$purchase->product->url}">{$purchase->product->name|escape}</a> {$purchase->variant->name|escape} </td> заменяем {* Название товара *} <td class="name"> <a href="products/{$purchase->product->url}">{$purchase->product->name|escape}</a> Цвет {$purchase->variant->name|escape}{if $purchase->variant->size}, размер {$purchase->variant->size}{/if} </td> Quote Link to post Share on other sites
mart Posted November 18, 2015 Report Share Posted November 18, 2015 Пишите в личку фрилансерам, кто поможет. 1. Публикация чьего-то "платного" кода в паблик карается баном - читайте правила.2. След. раз оформляйте код в специальный тег. Quote Link to post Share on other sites
Kors Posted November 18, 2015 Report Share Posted November 18, 2015 Совет припозднился - ТС уже месяц не отмечался на форуме... 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.