Jump to content

Recommended Posts

Имеется вот такой код 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 by De5pro
Link to post
Share on other sites

Купить готовое возможности нету .

 

Да кому Вы врете?

В таком случае стоит полагать что вам и магазин нечем содержать.

Напрашивается вопрос: на кой черт Вам тот магазин тогда?

Денег у него нет... Во пошел народ офигевший.

Link to post
Share on other sites

Пытался сам но не работает .

Купить готовое возможности нету .

Помогите кто чем сможет .

В этом месте

data-color="$v=>color"

у Вас в миниатюрном тексте внутри кавычек  аж две ошибки...

 

В давние детские годы была популярной острота "Подайте слепому на телевизор"...

 

Link to post
Share on other sites

Да кому Вы врете?

В таком случае стоит полагать что вам и магазин нечем содержать.

Напрашивается вопрос: на кой черт Вам тот магазин тогда?

Денег у него нет... Во пошел народ офигевший.

Этот сайт я делаю не для себя . Прежде чем утверждать подавите в себе закомплексованность скрытаю , подумайте потом пишите . А вы уже заглянули в мой кошелек ?

Link to post
Share on other sites

А вы уже заглянули в мой кошелек ?

Мне ну нужно этого делать, о своем недостатке средств Вы сообщили сами, вот цитирую:

Этот сайт я делаю не для себя .

 

Если Вы сайт делаете не для себя значит кто-то Вам за сайт заплатит, если не заплатит то Вы скорее всего чей-то раб (фигурально) работающий за еду.

Link to post
Share on other sites

Пытался сам но не работает .

Купить готовое возможности нету .

Помогите кто чем сможет .

 

этот участок кода

data-color="$v=>color" 

нужно заменить на

data-color="{$v->color}"

и смотреть дальше есть ли ошибки. 

Link to post
Share on other sites

Сразу бросается в глаза, что

$('label.color').html(color);

явно не даст правильного результатат, так как изменит НЕСКОЛЬКО текстов у всех радиокнопок цвета.

 

И у самих радиокнопок вначале HTML формируется странно, без подписей. Может, конечно, подписи потом формирует неуказанный JS-скрипт, но это маловероятно...

 

Полагаю, на этом ошибки не кончатся...

 

Похоже, ТС где-то что-то скопировал и отредактировал методом тыка без особого понятия...

 

mishanya имеет в данной теме широкий фронт работ по исправлению...

Link to post
Share on other sites

Да кому Вы врете?

В таком случае стоит полагать что вам и магазин нечем содержать.

Напрашивается вопрос: на кой черт Вам тот магазин тогда?

Денег у него нет... Во пошел народ офигевший.

Запарили своей желчью.

Не нравится? Проходите мимо, епт.

Link to post
Share on other sites

Мне ну нужно этого делать, о своем недостатке средств Вы сообщили сами, вот цитирую: 

Если Вы сайт делаете не для себя значит кто-то Вам за сайт заплатит, если не заплатит то Вы скорее всего чей-то раб (фигурально) работающий за еду.

И опять не угодали .

Link to post
Share on other sites
  • 4 weeks later...
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>      

Link to post
Share on other sites
  • 2 weeks later...

Пишите в личку фрилансерам, кто поможет. 

1. Публикация чьего-то "платного" кода в паблик карается баном - читайте правила.
2. След. раз оформляйте код в специальный тег.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...