Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Имеется вот такой код 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}  

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

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

Изменено пользователем De5pro
Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

В этом месте

data-color="$v=>color"

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

 

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

 

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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

data-color="$v=>color" 

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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

 

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

 

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

Тебя это абсолютно не касается, проходи сам мимо, идиот.
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • 4 недели спустя...
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>      

Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...

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

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

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

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

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...