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

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

Всем привет! Такой вопрос. Как сделать так чтоб можно было выбирать у товара размер и цвет? на пример коньки, выбираем размер..

Как такое провернуть?  

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

В общем, потребовалось для будущего магазина одежды реализовать функцию выбора размера и цвета, на одном из сайтов нашел в продаже модуль за небольшие деньги, приобрел , выполнил все по инструкции, но в итоге оказалось модуль недоделанный, в админке все работает (есть 1 маленький баг, о нем позже), к вариантам размера и цвета удобно привязывается фото, а вот на странице товара работает только смена фотографии при выборе в выпадающем списке варианта цвета, а остальное не работает - то есть, при выборе вариантов цена не меняется автоматически (все время отображается цена последнего варианта), а также не скрываются недоступные для данного цвета размеры и наоборот. В корзине все работает как надо, то есть подтягивается фото выбранного варианта цвета. Фактически надо допилить страницу товара, похоже, что там отсутствуют скрипты изменения цены и скрытия недоступных вариантов. Если доделаем общими усилиями, то данная доработка станет достоянием общественности, а её так не хватает в стандартном функционале. Прикрепил архив с инструкцией и файлами (в инструкции кстати как раз в конце отсутствует пункт по редактированию product.tpl , но в файлах он есть, его нужно только допилить) 

 

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

В общем, потребовалось для будущего магазина одежды реализовать функцию выбора размера и цвета, на одном из сайтов нашел в продаже модуль за небольшие деньги, приобрел , выполнил все по инструкции, но в итоге оказалось модуль недоделанный, в админке все работает (есть 1 маленький баг, о нем позже), к вариантам размера и цвета удобно привязывается фото, а вот на странице товара работает только смена фотографии при выборе в выпадающем списке варианта цвета, а остальное не работает - то есть, при выборе вариантов цена не меняется автоматически (все время отображается цена последнего варианта), а также не скрываются недоступные для данного цвета размеры и наоборот. В корзине все работает как надо, то есть подтягивается фото выбранного варианта цвета. Фактически надо допилить страницу товара, похоже, что там отсутствуют скрипты изменения цены и скрытия недоступных вариантов. Если доделаем общими усилиями, то данная доработка станет достоянием общественности, а её так не хватает в стандартном функционале. Прикрепил архив с инструкцией и файлами (в инструкции кстати как раз в конце отсутствует пункт по редактированию product.tpl , но в файлах он есть, его нужно только допилить) 

 

Повторяю. 

Приобретайте доработки у их авторов, тогда авторы будут всё доделывать. А покупать на сайтах у барыг за смешные деньги модуль, а затем выкладывать его в бесплатный доступ - это неуважение к чужому труду.

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

Повторяю. 

Приобретайте доработки у их авторов, тогда авторы будут всё доделывать. А покупать на сайтах у барыг за смешные деньги модуль, а затем выкладывать его в бесплатный доступ - это неуважение к чужому труду.

 

Так Вы автор этого расширения что ли? Я откуда знаю кто написал тот  или  иной код - зашел на сайт, купил. Не работает)))

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

Так Вы автор этого расширения что ли?

Нет. Именно этого - скорее всего simplashop.com. Детально не смотрел, но они называют доработки в таком стиле.

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

Так Вы автор этого расширения что ли? Я откуда знаю кто написал тот  или  иной код - зашел на сайт, купил. Не работает)))

 

ну работает оно так как описано в функционале (автор действительно simplashop). изменять цену при смене цвета не проблема. а насчет размера - помоему в этой доработке один размер = один цвет. там нельзя несколько размеров прикрепить к цвету. фильтр для селекта можно тоже сделать, чтобы при выборе цвета размер менялся. смотрите в сторону этого

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

Как автор доработки скажу, что можно делаю любые сочетания цвета-размера. Но каждый вариант надо задавать отдельно, т.к. там свои остатки и возможно свои цены. Фото к каждому варианту (если этот модуль включает и фото), то назначаются именно вариант (паре цвет-размер), а не конкретно цвету или размеру.

Этот скрипт был рабочим - внесенные изменения в нем не проверял, но обычно при попытке скрыть автора "нехорошие люди" удаляю не только форматирование, но и куски кода случайно.

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

Люди добрые, подскажите. в стандартной версии поле выбора цвета скрывается, если есть только 1 варианта цвета 

Код такой {if $product->colors|count < 2} style="display:none;"{/if} , а как сделать ,чтобы поле скрывалось только тогда, когда вообще нет вариантов цвета, а если есть 1 вариант, то он не скрывался?  Ставлю colors|count < 1   - поле всеравно скрывается, а ставлю colors|count = 0  - то ошибка синтаксиса.

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

Чет не срабатывает тогда style="display:none;"  если поле цвета не заполнено. Это вобщем я купил вот эту доработку

 http://simpla-template.org.ua/products/varianty-tovara

 

Но мне хотелось бы сделать следующее - поменять инпуты на выпадающий селект, а также не устраивает то, что если  у вариантов указан например 1 цвет и 1 размер, то они скрываются вовсе, а хотелось бы чтоб они скрывались, только если их вовсе нет. Реально ли такое реализовать в данном расширении?

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

Чет не срабатывает тогда style="display:none;"  если поле цвета не заполнено. Это вобщем я купил вот эту доработку

 http://simpla-template.org.ua/products/varianty-tovara

 

Но мне хотелось бы сделать следующее - поменять инпуты на выпадающий селект, а также не устраивает то, что если  у вариантов указан например 1 цвет и 1 размер, то они скрываются вовсе, а хотелось бы чтоб они скрывались, если их поле пустое. Реально ли такое реализовать в данном расширении?

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

Опять барыга? Да чтож такое, как их распознать? Отдал 35$, думал цена уже адекватная и на тебе. В первый раз купил за 250рубелй, так модуль вообще не работал, в этот раз работает, но выходит, что дал заработать барыге?? И че теперь делать...  Почему у вас на форуме нет черных списков сайтов-барыг? Как поступать прстым покупателям, которые  не в курсе происходящего?

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

Ну так что, реально ли переделать с инпутов на селекты? По идее надо чуть изменить скрипт

 

 



<tr{if $product->colors|count < 2} style="display:none;"{/if}>
<td id="colors">
Цвета:<br/>
{foreach $product->colors as $k=>$v}<label{if $v@first} class="active"{/if}><input type="radio" name="color" value="{$k}"{if $v@first} checked{/if} />{$k}</label>{/foreach}
</td>
</tr>
<tr{if $product->heights|count < 2} style="display:none;"{/if}>
<td id="heights">
Рост:<br/>
{foreach $product->heights as $k=>$v}<label{if $v@first} class="active"{/if}><input type="radio" name="height" value="{$k}"{if $v@first} checked{/if} />{$k}</label>{/foreach}
</td>
</tr>
<tr{if $product->variants|count < 2} style="display:none;"{/if}>
<td id="variants">
Размеры:<br/>
{foreach $product->variants as $v}<label{if $v@first} class="active"{/if}><input type="radio" name="variant" value="{$v->id}"{if $v@first} checked{/if} />{$v->name}</label>{/foreach}
</td>
</tr>





var variants = {
{foreach $product->variants as $v} '{$v->id}': {literal}{{/literal}'color':'{$v->color}', 'images_ids':[{$v->images_ids}], 'height':'{$v->height}', 'name':'{$v->name}', 'price':'{$v->price}', 'compare_price':'{$v->compare_price}'{literal}}{/literal},
{/foreach}
};

{literal}

function changeColor(){
var color = $('input[name=color]:checked'),
arr = [];

$('#colors label').removeClass('active');
color.parent().addClass('active');

$('#heights label').remove(); //удаляем все ростовки
$.each(variants, function(id, val) {
if(val['color'] == color.val() && $.inArray(val['height'], arr) < 0) {
arr.push(val['height']);
$('#heights').append('<label><input type="radio" name="height" value="' + val['height'] + '" />' + val['height'] + '</label>');
}
});

if(arr.length > 1) $('#heights').show();
else $('#heights').hide();

$("input[name=height]:first").attr('checked', true).parent().addClass('active');
changeHeight();
}

function changeHeight(){
var height = $('input[name=height]:checked'),
c = $('input[name=color]:checked').val(),
arr = [];

$('#heights label').removeClass('active');
height.parent().addClass('active');

$('#variants label').remove(); //удаляем все ростовки
$.each(variants, function(id, val) {
if(val['color'] == c && val['height'] == height.val() && $.inArray(val['name'], arr) < 0) {
arr.push(val['name']);
$('#variants').append('<label><input type="radio" name="variant" value="' + id + '" />' + val['name'] + '</label>');
}
});

if(arr.length > 1) $('#variants').show();
else $('#variants').hide();

$("input[name=variant]:first").attr('checked', true).parent().addClass('active');
changeVariant();
}

function changeVariant(){
var variant = $('input[name=variant]:checked'),
val = variants[variant.val()],
images_ids = val['images_ids'],
image_id = images_ids[0],
arr = [];

$('.images a').hide();
if(image_id != '' && $('#image' + image_id) !== 'undefined') {
$('#big_image img').attr('src', $('#image'+image_id).attr('rel'));
$.each(images_ids, function(id, val) { $('#image' + val).show(); });
}

$('#variants label').removeClass('active');
variant.parent().addClass('active');

$('.compare_price').text(val['compare_price']);
$('.price').text(val['price']);
}

$(function() {
$('#colors input').live('change', function(){ changeColor(); });
$('#heights input').live('change', function(){ changeHeight(); });
$('#variants input').live('change', function(){ changeVariant(); });
changeColor();
});
{/literal}
</script>
Изменено пользователем martinways
Ссылка на сообщение
Поделиться на другие сайты

Люди добрые, помогите переделать выбор цвета, роста и размера с инпутов на селекты, вот код

 

 

 <tr>            
            <td id="colors">
                Цвета: {foreach $product->colors as $k=>$v}<label{if $v@first} class="active"{/if}><input type="radio" name="color" value="{$k}"{if $v@first} checked{/if} />{$k}</label>{/foreach} 
            </td>
    
               
            <td id="heights" {if $product->heights|count < 2} style="display:none;"{/if}>
                Рост: {foreach $product->heights as $k=>$v}<label{if $v@first} class="active"{/if}><input type="radio" name="height" value="{$k}"{if $v@first} checked{/if} />{$k}</label>{/foreach}
            </td>
           
            <td id="variants"{if $product->variants|count < 2} style="display:none;"{/if}>
                Размеры: {foreach $product->variants as $v}<label{if $v@first} class="active"{/if}><input type="radio" name="variant" value="{$v->id}"{if $v@first} checked{/if} />{$v->name}</label>{/foreach} 
            </td>

 

 <script>

    var variants = {
        {foreach $product->variants as $v} '{$v->id}': {literal}{{/literal}'color':'{$v->color}', 'images_ids':[{$v->images_ids}], 'height':'{$v->height}', 'name':'{$v->name}', 'price':'{$v->price|convert}', 'compare_price':'{$v->compare_price}'{literal}}{/literal},
        {/foreach}   
    };

    {literal}
    
    function changeColor(){
        var color = $('input[name=color]:checked'),
            arr = []; 
            
        $('#colors label').removeClass('active');   
        color.parent().addClass('active');
        
        $('#heights label').remove(); //удаляем все ростовки
        $.each(variants, function(id, val) {
            if(val['color'] == color.val() && $.inArray(val['height'], arr) < 0) { 
                arr.push(val['height']);   
                $('#heights').append('<label><input type="radio" name="height" value="' + val['height'] + '" />' + val['height'] + '</label>'); 
            }
        });
        
        if(arr.length > 1) $('#heights').show();
        else $('#heights').hide();       

        $("input[name=height]:first").attr('checked', true).parent().addClass('active');
        changeHeight();       
    }
    
    function changeHeight(){
        var height = $('input[name=height]:checked'),
            c = $('input[name=color]:checked').val(),
            arr = []; 
            
        $('#heights label').removeClass('active');   
        height.parent().addClass('active');

        $('#variants label').remove(); //удаляем все ростовки
        $.each(variants, function(id, val) {
            if(val['color'] == c && val['height'] == height.val() && $.inArray(val['name'], arr) < 0) { 
                arr.push(val['name']);   
                $('#variants').append('<label><input type="radio" name="variant" value="' + id + '" />' + val['name'] + '</label>'); 
            }
        });
        
        if(arr.length > 1) $('#variants').show();
        else $('#variants').hide();

        $("input[name=variant]:first").attr('checked', true).parent().addClass('active');
        changeVariant();       
    }

    function changeVariant(){
        var variant = $('input[name=variant]:checked'),
            val = variants[variant.val()],
            images_ids = val['images_ids'],
            image_id = images_ids[0],
            arr = [];
            
        $('.images a').hide();
        if(image_id != '' && $('#image' + image_id) !== 'undefined') {
            $('#big_image img').attr('src', $('#image'+image_id).attr('rel'));
            $.each(images_ids, function(id, val) { $('#image' + val).show(); });
        }
            
        $('#variants label').removeClass('active');   
        variant.parent().addClass('active');            

        $('.compare_price').text(val['compare_price']);   
        $('.price').text(val['price']);   
    }

    $(function() {
        $('#colors input').live('change', function(){ changeColor(); });
        $('#heights input').live('change', function(){ changeHeight(); });
        $('#variants input').live('change', function(){ changeVariant(); });
        changeColor();
    });
    {/literal}
    </script>
Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

 

Люди добрые, помогите переделать выбор цвета, роста и размера с инпутов на селекты, вот код

 

 

 <tr>            
            <td id="colors">
                Цвета: {foreach $product->colors as $k=>$v}<label{if $v@first} class="active"{/if}><input type="radio" name="color" value="{$k}"{if $v@first} checked{/if} />{$k}</label>{/foreach} 
            </td>
    
               
            <td id="heights" {if $product->heights|count < 2} style="display:none;"{/if}>
                Рост: {foreach $product->heights as $k=>$v}<label{if $v@first} class="active"{/if}><input type="radio" name="height" value="{$k}"{if $v@first} checked{/if} />{$k}</label>{/foreach}
            </td>
           
            <td id="variants"{if $product->variants|count < 2} style="display:none;"{/if}>
                Размеры: {foreach $product->variants as $v}<label{if $v@first} class="active"{/if}><input type="radio" name="variant" value="{$v->id}"{if $v@first} checked{/if} />{$v->name}</label>{/foreach} 
            </td>

 

 <script>

    var variants = {
        {foreach $product->variants as $v} '{$v->id}': {literal}{{/literal}'color':'{$v->color}', 'images_ids':[{$v->images_ids}], 'height':'{$v->height}', 'name':'{$v->name}', 'price':'{$v->price|convert}', 'compare_price':'{$v->compare_price}'{literal}}{/literal},
        {/foreach}   
    };

    {literal}
    
    function changeColor(){
        var color = $('input[name=color]:checked'),
            arr = []; 
            
        $('#colors label').removeClass('active');   
        color.parent().addClass('active');
        
        $('#heights label').remove(); //удаляем все ростовки
        $.each(variants, function(id, val) {
            if(val['color'] == color.val() && $.inArray(val['height'], arr) < 0) { 
                arr.push(val['height']);   
                $('#heights').append('<label><input type="radio" name="height" value="' + val['height'] + '" />' + val['height'] + '</label>'); 
            }
        });
        
        if(arr.length > 1) $('#heights').show();
        else $('#heights').hide();       

        $("input[name=height]:first").attr('checked', true).parent().addClass('active');
        changeHeight();       
    }
    
    function changeHeight(){
        var height = $('input[name=height]:checked'),
            c = $('input[name=color]:checked').val(),
            arr = []; 
            
        $('#heights label').removeClass('active');   
        height.parent().addClass('active');

        $('#variants label').remove(); //удаляем все ростовки
        $.each(variants, function(id, val) {
            if(val['color'] == c && val['height'] == height.val() && $.inArray(val['name'], arr) < 0) { 
                arr.push(val['name']);   
                $('#variants').append('<label><input type="radio" name="variant" value="' + id + '" />' + val['name'] + '</label>'); 
            }
        });
        
        if(arr.length > 1) $('#variants').show();
        else $('#variants').hide();

        $("input[name=variant]:first").attr('checked', true).parent().addClass('active');
        changeVariant();       
    }

    function changeVariant(){
        var variant = $('input[name=variant]:checked'),
            val = variants[variant.val()],
            images_ids = val['images_ids'],
            image_id = images_ids[0],
            arr = [];
            
        $('.images a').hide();
        if(image_id != '' && $('#image' + image_id) !== 'undefined') {
            $('#big_image img').attr('src', $('#image'+image_id).attr('rel'));
            $.each(images_ids, function(id, val) { $('#image' + val).show(); });
        }
            
        $('#variants label').removeClass('active');   
        variant.parent().addClass('active');            

        $('.compare_price').text(val['compare_price']);   
        $('.price').text(val['price']);   
    }

    $(function() {
        $('#colors input').live('change', function(){ changeColor(); });
        $('#heights input').live('change', function(){ changeHeight(); });
        $('#variants input').live('change', function(){ changeVariant(); });
        changeColor();
    });
    {/literal}
    </script>

а че он не работает?

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

а че он не работает?

 

смотрите выше, человек сам просит код доработать, собственно поетому и не работает

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

смотрите выше, человек сам просит код доработать, собственно поетому и не работает

 

Код не работает по причине того, что человек просит его доработать?

Какая необычная ситуация...

Может, тогда человеку надо лишь отозвать просьбу о доработке? Глядишь, код и заработает...

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

Если Вы хотите, чтобы Вам починили, то надо не бросать кусок кода, как кость собаке, а давать данные максимально полные, как минимум URL страницы, где этот код не работает...

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

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

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

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

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

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

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

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

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

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