Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Добавление страницы в "Избранное"

Автор diii3Раздел Шаблоны XSLT

Ответов: 4
Просмотров: 3288
Последний ответ 13 Февраля 2013, 06:18:50
от admin
Добавление поля "объем" в карточку товара, которое влияло бы на цену

Автор prukonРаздел Настройка системы и модулей

Ответов: 5
Просмотров: 2933
Последний ответ 06 Ноября 2016, 14:44:49
от aghigay
Добавление данных из объекта в форму "Заказ в 1 клик"

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 4
Просмотров: 4016
Последний ответ 11 Ноября 2014, 11:14:45
от Axiomateria
Магазин "Современный" - добавление заголовка к левому меню каталога

Автор manadsgnРаздел Шаблоны XSLT

Ответов: 4
Просмотров: 4064
Последний ответ 25 Июня 2012, 17:33:00
от manadsgn
Добавление уже имеющихся объектов каталога в другие категории через дополнительн

Автор johnРаздел Шаблоны XSLT

Ответов: 14
Просмотров: 5292
Последний ответ 09 Июня 2015, 12:43:53
от admin

0 Пользователей и 2 Гостей просматривают эту тему.

*

tatfox

  • *
  • 44
  • +0/-0
    • Просмотр профиля
Добрый день! Похожие вопросы обсуждались уже много раз. Не нашел то что искал.
У меня корзина может работать через ajax и через обычную форму.

Кнопка через  ajax
<a class="basket_list" id="add_basket_%id%" href="%pre_lang%/emarket/basket/put/item/%id%/">В корзину</a>

Обычная форма
<form method="GET" action="%pre_lang%/emarket/basket/put/item/%id%/" class="right">
<input type="number" name="amount" value="1" required>
<input id="add_basket_%id% class="basket_list" type="submit" value="В корзину" />
</form>

Оба варианта работают, но при добавлении через ajax нельзя выбрать количество товаров. Как можно сделать, чтоб можно было выбрать количество товаров при добавлении  через ajax?
« Последнее редактирование: 27 Апреля 2016, 15:11:09 от tatfox »

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Подсказка: при добавлении через ajax не нельзя, а не применяется выбор. Видимо так правильнее сформулировать?

В связи с этим вопрос: какими скриптами вы пользуетесь и что именно они делают? Лучше со ссылкой на конкретное место где что-то не работаеть
Мой блог http://umicms.me

*

tatfox

  • *
  • 44
  • +0/-0
    • Просмотр профиля
Подсказка: при добавлении через ajax не нельзя, а не применяется выбор. Видимо так правильнее сформулировать?

В связи с этим вопрос: какими скриптами вы пользуетесь и что именно они делают? Лучше со ссылкой на конкретное место где что-то не работаеть
Ну да так правильнее будет) Извините за мой русский
Делал по этой инструкции.http://pontyk.com.ua/umi-cms/umi-cms-dobavlenie-tovara-v-korzinu-bez-perezagruzki-stranicy-ili-ajax-dobavlenie-tovara-v-korzinu/

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Да дело тут не в русском языке - дело в том, что правильно сформулированный вопрос - это уже половина ответа.

В данном случае выбор количества не применяется просто потому, что количество не передается в скрипте site.basket.add в качестве параметра.

Самым простым мне видится - сделать несколько радиокнопок (именно радиокнопок) с именем amount и количеством в каждой (1, 2, 3,...), положить их в ту же форму, что и кнопка добавления и тогда (возможно) все заработает. Опять же, не видя вашей верстки не факт что все будет. Может все будет на ура, а может ничего не случится.
Мой блог http://umicms.me

*

tatfox

  • *
  • 44
  • +0/-0
    • Просмотр профиля
Не совсем понял, если сделать 3 радио кнопок то это же будет работать как обычно без ajax?

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Ну... Как бы, на первый взгляд, не вникая в подробности реализации функций из примера, может показаться именно так. Но, на практике, все может быть совсеееееееем иначе :-)
Мой блог http://umicms.me

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Выложите код файла /templates/demoold/js/basket.js - тогда можно будет сказать, где и что исправлять.
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

tatfox

  • *
  • 44
  • +0/-0
    • Просмотр профиля
site.basket = {};

site.basket.replace = function(id) {
return function(e) {
var text, discount, goods_discount_price, goods_discount, item_total_price, item_discount, cart_item, basket, i, item,
cart_summary = jQuery('.cart_summary'),
cart_discount = jQuery('.cart_discount'),
goods_discount_price = jQuery('.cart_goods_discount'),
add_basket_button_text = 'В корзине ',
rem_item = true,
detect_options = {};

if (e.summary.amount > 0) {
text = e.summary.price.actual + ' ' + e.summary.price.suffix;
goods_discount = ((typeof e.summary.price.original == 'undefined') ? e.summary.price.actual : e.summary.price.original) + ' ' + e.summary.price.suffix;
discount = ((typeof e.summary.price.discount != 'undefined') ? e.summary.price.discount : '0') + ' ' + e.summary.price.suffix;
for (i in e.items.item) {
item = e.items.item[i];
if (item.id == id) {
rem_item = false;
item_total_price = item["total-price"].actual + ' ' + item["total-price"].suffix;
item_discount = ((typeof item.discount != 'undefined') ? item.discount.amount : '0') + ' ' + item["total-price"].suffix;
}
if (item.page.id == id) {
if (detect_options.amount) {
detect_options.amount = detect_options.amount + item.amount;
}
else detect_options = {'id':id, 'amount':item.amount};
}
}
if (detect_options.amount) {
var add_basket_button = jQuery('#add_basket_' + detect_options.id);
if (add_basket_button[0].tagName.toUpperCase() == 'A') {
add_basket_button.text(add_basket_button_text + ' (' + detect_options.amount + ')');
}
if (add_basket_button[0].tagName.toUpperCase() == 'FORM') {
add_basket_button = jQuery('input:submit', add_basket_button);
add_basket_button.val(add_basket_button_text + ' (' + detect_options.amount + ')');
}
else add_basket_button.val(add_basket_button_text + ' (' + detect_options.amount + ')');
}
if (rem_item) {
if (cart_item = jQuery('.cart_item_' + id)) {
cart_item.remove();
cart_summary.text(text);
cart_discount.text(discount);
goods_discount_price.text(goods_discount);
}
}
else {
jQuery('.cart_item_price_' + id).text(item_total_price);
jQuery('.cart_item_discount_' + id).text(item_discount);
cart_summary.text(text);
cart_discount.text(discount);
goods_discount_price.text(goods_discount);
}
text = '<a href="http://ognistolicy.com/korzina/" style="display: block; padding: 0px 20px; font-size: 14px; text-align: center;"><img src="/images/kor.jpg">  Товаров в корзине ' + e.summary.amount+'<br>Общая стоимость: '+ text +'</a>';
}
else {
text = 'В корзине нет ни одного товара.';
if (basket = jQuery('.basket')) {
basket.text(text);
}
}
jQuery('.basket_info_summary').html(text);
};
};

site.basket.add = function(id, form, popup) {
var e_name, options = {};
if (form) {
var elements = jQuery(':radio:checked', form);
for (var i = 0; i < elements.length; i++) {
e_name = elements[i].name.replace(/^options\[/, '').replace(/\]$/, '');
options[e_name] = elements[i].value;
}
}
basket.putElement(id, options, this.replace(id));
if (popup) jQuery('#add_options_' + id).remove();
};

site.basket.list = function(link) {
var id = (link.id.indexOf('add_basket') != -1) ? link.id.replace(/^add_basket_/, '') : link;
if (!id) return false;
if (jQuery(link).hasClass('options_true')) {
if (jQuery('#add_options_' + id).length == 0) {
jQuery.ajax({
url: '/upage//' + id + '?transform=modules/catalog/popup-add-options.xsl',
dataType: 'html',
success: function (data) {
site.message({
id: 'add_options_' + id,
header: 'Выбор опций',
width: 400,
content: data
});
}
});
}
}
else this.add(id);
};

site.basket.modify = function(id, amount_new, amount_old) {
if (amount_new.replace(/[\d]+/) == 'undefined' && amount_new != amount_old) {
basket.modifyItem(id, {amount:amount_new}, this.replace(id));
}
};

site.basket.remove = function(id) {
if (id == 'all') basket.removeAll(this.replace(id));
else basket.removeItem(id, this.replace(id));
};

site.basket.init = function() {
jQuery('.basket_list').click(function(){
site.basket.list(this);
return false;
});
jQuery('form.options').submit(function(){
var id = (this.id.indexOf('add_basket') != -1) ? this.id.replace(/^add_basket_/, '') : this;
site.basket.add(id, this);
return false;
});
jQuery('div.basket a.del').click(function(){
site.basket.remove(this.id);
return false;
});
jQuery('div.basket a.basket_remove_all').click(function(){
site.basket.remove('all');
return false;
});
};

jQuery(document).ready(function(){site.basket.init()});

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
А что, реально еще не пробовали сделать как я предложил? :-)
Мой блог http://umicms.me

*

tatfox

  • *
  • 44
  • +0/-0
    • Просмотр профиля
А что, реально еще не пробовали сделать как я предложил? :-)
неет, так не работает

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
site.basket.add = function(id, form, popup) {
var e_name, options = {};
if (form) {
            var elements = jQuery(':radio:checked', form);
            for (var i = 0; i < elements.length; i++) {
                e_name = elements[i].name.replace(/^options\[/, '').replace(/\]$/, '');
                options[e_name] = elements[i].value;
            }
            if(jQuery('.amount', form).length > 0){
                options['amount'] = jQuery('.amount', form).val();
            }
}
basket.putElement(id, options, this.replace(id));
if (popup) {
site.message.close(jQuery('#add_options_' + id), jQuery('.overlay'))
}
};
Мой блог http://umicms.me

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
И не забудьте поле для количества снабдить классом amount и положить его в одну форму со своей кнопкой "Добавить в корзину"
Мой блог http://umicms.me

*

tatfox

  • *
  • 44
  • +0/-0
    • Просмотр профиля
И не забудьте поле для количества снабдить классом amount и положить его в одну форму со своей кнопкой "Добавить в корзину"
Спсибо, как только сделаю отпишусь.)