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

Выпадающий список в товаре, вместо булитов!


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

> Не получается. Не знаю куда вставить. Помогите Пожалуйста. Может текст файл
Что именно не получается?

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 53
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

для детей :)
1. открываем файл /ваша_тема/js/ajax_cart.js находим строку
data: {variant: $(this).find('input[name=variant]:checked').val()},
и заменяем ее на

data: {variant: $(this).find('input[name=variant]:checked').val(), amount: $(this).find('input[name=amount]').val()},

2. в файлах /ваша_тема/html/main.tpl, product.tpl и products.tpl находим строку
< input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
и перед ней вставляем
< input type="text" name="amount" class="amount" />

3. добавляем в стиль в файл /ваша_тема/css/style.css
.variants .amount {width:30px;}

П.С. убрать пробел перед input

Если меняли для вывода вариантов списком то пункт 1

data: {variant: $(this).find('select').val()},
и заменяем ее на

data: {variant: $(this).find('select').val(), amount: $(this).find('input[name=amount]').val()},

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

Спасибо все получилось. А вот код для чего нужен, и его вставлять во все три темплейта?:
{literal}
<script>
$(function() {

// Выбор вариантов
$('select[name=variant]').change(function() {
price = $(this).find('option:selected').attr('price');
compare_price = '';
if(typeof $(this).find('option:selected').attr('compare_price') == 'string')
compare_price = $(this).find('option:selected').attr('compare_price');
$(this).find('option:selected').attr('compare_price');
$(this).closest('form').find('span').html(price);
$(this).closest('form').find('strike').html(compare_price);
return false;
});

});
</script>
{/literal}
Вот и все, дальше по образу и подобию, ну еще в style.css нужно подправить на Ваше усмотрение.

Да еще маленькая деталь, в файле ajax_cart.js это который в шаблоне
строку
data: {variant: $(this).find('input[name=variant]:checked').val()},
заменить на
data: {variant: $(this).find('select').val()},

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

> А вот код для чего нужен, и его вставлять во все три темплейта?
Да во все 3 {literal}.....{/literal}, он обрабатывает варианты товара
> а и еще вопрос, как сделать бекап шаблона?
В админке -> Дизайн -> Сделать копию темы
> Или он в БД пишется, просто сделать бекап БД?
В БД пишется только какой шаблон используется.

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

Спасибо! Извините за столь большое количество вопросов) Но вот еще один. Выпадающие варианты сделал, все работает, но на странице с товаром ниже есть "Также рекомендуем посмотреть", так вот там остались кружочки...Где это можно поправить? Спасибо

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

Есть еще одна интересная особенность.
На дефолтном стиле могу изменить цвет и размер, как старой так и новой цены


После того как я поменял код, чтоб сделать выпадающие окна вариантов вместо булетов, пропала возможность изменять размер и цвет, точнее эта возможность есть, но меняет она сразу две цены, старую и новую. Т.е. реагирует только на изменения в .product.price. Если менять в product .compare_price - никакой реакции нет.

Вот код, где я заменил размеры и цвет в старой и новой цене

а вот что получилось

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

если внимательно посмотреть на код который Вы вставляли, то заметите что
класса compare_price нет, а вместо него strike
Вы привели скриншот стилей, вот и поменяйте .compare_price на strike

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

извините, но вот же он есть здесь =)

<select name="variant" {if $product->variants|count==1 && !$product->variant->name}style='display:none;'{/if}>
{foreach $product->variants as $v}
<option value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}">
{$v->name}
</option>
{/foreach}
</select>

<div class="price">
<strike>
{if $product->variant->compare_price > 0}
{$product->variant->compare_price|convert}
{/if}
</strike>
<span>{$product->variant->price|convert}</span>
<i>{$currency->sign|escape}</i>
</div>

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

Кошмар какой-то творится с этими списками!
Вот создал разработчик чекбоксы, и спрашивается зачем?
В сотый раз вижу, что всем было удобнее списком, админ тоже это видит но ничего не предпринимает.
Так почему бы это все не исправить и не создать тему с решением?
Я просто в шоке=(

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

Все сделал как написано "для детей", а получилось текстовое поле, вот изза этой строчки:
< input type="text" name="amount" class="amount" />

а мне, то надо чтобы выпадающий список был с размерами.

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

Кроха а ты не мог скинуть мне архив для изменения списка булитов - "Селекты вместо булитов" на выпадающий лист. Где ясно все расписано для новичка, если не сложно.

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

data: {variant: $(this).find('input[name=variant]:checked').val()},
заменить на
data: {variant: $(this).find('select').val()},

У меня такого нету, шаблон оригинал - default,

// ?????????????°?? ?????€?·?????°
$('form.variants').live('submit', function(e) {
e.preventDefault();
button = $(this).find('input[type=submit]');
if($(this).find('input[name=variant]:checked').size()>0)
variant = $(this).find('input[name=variant]:checked').val();
if($(this).find('select[name=variant]').size()>0)
variant = $(this).find('select').val();
$.ajax({
url: "ajax/cart.php",
data: {variant: variant},
dataType: 'json',
success: function(data){
$('#cart_informer').html(data);
if(button.attr('data-result-text'))
button.val(button.attr('data-result-text'));
}
});
var o1 = $(this).offset();
var o2 = $('#cart_informer').offset();
var dx = o1.left - o2.left;
var dy = o1.top - o2.top;
var distance = Math.sqrt(dx * dx + dy * dy);
$(this).closest('.product').find('.image img').effect("transfer", { to: $("#cart_informer"), className: "transfer_class" }, distance);
$('.transfer_class').html($(this).closest('.product').find('.image').html());
$('.transfer_class').find('img').css('height', '100%');
return false;
});


/*
// ?????????????°?? ?????€?·?????°
$('a[href*=cart?variant]').live('click', function(e) {
e.preventDefault();
//variant_id = $(this).attr('id');

href = $(this).attr('href');
pattern = /\/?cart\?variant=(\d+)$/;
variant_id = pattern.exec(href)[1];

link = $(this);
$.ajax({
url: "ajax/cart.php",
data: {variant: variant_id},
dataType: 'json',
success: function(data){
$('#cart_informer').html(data);
//if(link.attr('added_text'))
// link.html(link.attr('added_text'));
//link.attr('href', '/cart');
}
});

var o1 = $(this).offset();
var o2 = $('#cart_informer').offset();
var dx = o1.left - o2.left;
var dy = o1.top - o2.top;
var distance = Math.sqrt(dx * dx + dy * dy);

$(this).closest('.product').find('.image img').effect("transfer", { to: $("#cart_informer"), className: "transfer_class" }, distance);
$('.transfer_class').html($(this).closest('.product').find('.image').html());
$('.transfer_class').find('img').css('height', '100%');
return false;
});
*/

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

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

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

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

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

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

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

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

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

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