Основной курс по Joomla
0 Пользователей и 1 Гость просматривают эту тему.
  • 26 Ответов
  • 2817 Просмотров
*

chesster

  • Осваиваюсь на форуме
  • ***
  • 149
  • 0
Не меняется цена
« : 06.08.2013, 14:50:25 »
Здравствуйте.
Только заметил, что не меняется цена в зависимости от количества.
Меняю количество, что-то происходит - цена помигивает, но сума не меняется.
Спасибо.
*

robert

  • Профи
  • ********
  • 4009
  • 371
Re: Не меняется цена
« Ответ #1 : 06.08.2013, 20:19:28 »
Похожие темы на форуме уже были, поищите. Дело скорее всего в шаблоне, он ведь не default, верно?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

chesster

  • Осваиваюсь на форуме
  • ***
  • 149
  • 0
Re: Не меняется цена
« Ответ #2 : 07.08.2013, 13:22:17 »
Похожие темы на форуме уже были, поищите. Дело скорее всего в шаблоне, он ведь не default, верно?
шаблон по то как раз по умолчанию, но чисто условно, потому что в нем уже куча правок.. но откат к первоначальному шаблону результата не дает.
п.с. не в моих привычках постить тему не использовав поиск перед этим :) создал значит не нашел ;)
*

robert

  • Профи
  • ********
  • 4009
  • 371
Re: Не меняется цена
« Ответ #3 : 07.08.2013, 13:29:54 »
не в моих привычках постить тему не использовав поиск перед этим :) создал значит не нашел ;)
Тогда вы уже должны знать, что необходимо давать больше информации.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

chesster

  • Осваиваюсь на форуме
  • ***
  • 149
  • 0
Re: Не меняется цена
« Ответ #4 : 07.08.2013, 14:40:11 »
Тогда вы уже должны знать, что необходимо давать больше информации.
даю больше информации.. установил полностью чистую Joomla 2 + полностью чистый VM2, все брал с рус. офсайтов последних версий..
и та же ошибка
увеличиваю количество, мутнеет цена (как будто слои накладываются) и становится опять на место ничего не поменяв
до

во время

после
*

robert

  • Профи
  • ********
  • 4009
  • 371
Re: Не меняется цена
« Ответ #5 : 07.08.2013, 15:40:27 »
А как должна была меняться цена в зависимости от количества?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

chesster

  • Осваиваюсь на форуме
  • ***
  • 149
  • 0
Re: Не меняется цена
« Ответ #6 : 07.08.2013, 15:51:17 »
А как должна была меняться цена в зависимости от количества?
;D ну как-бы так - общая цена товаров = количество товаров * цену одного товара
или, хз, в ВМ2 это не реализовано? просто в ВМ1 это было по умолчанию.. если так, то тогда какого фига вообще срабатывает непонятно какой скрипт при нажатии на +- количества товара
*

chesster

  • Осваиваюсь на форуме
  • ***
  • 149
  • 0
Re: Не меняется цена
« Ответ #7 : 07.08.2013, 16:27:35 »
при увеличении количества товара в карточке товара, цена должна изменяться в зависимости от количества.. т.е. цена 10$, нажал на плюсик, увеличил количество до 2, цена стала 20$.. там нажал я на submit корзины ("добавить в корзину") или нет, не важно..
« Последнее редактирование: 07.08.2013, 16:40:02 от chesster »
*

robert

  • Профи
  • ********
  • 4009
  • 371
Re: Не меняется цена
« Ответ #8 : 07.08.2013, 16:33:37 »
Прошу прощения, если случайно вас обидел. Предыдущий пост затираю.
установил полностью чистую Joomla 2 + полностью чистый VM2, все брал с рус. офсайтов последних версий..
и та же ошибка
увеличиваю количество, мутнеет цена (как будто слои накладываются) и становится опять на место ничего не поменяв
Какой к вас шаблон? В оригинальном default такого эффекта не видел.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

chesster

  • Осваиваюсь на форуме
  • ***
  • 149
  • 0
Re: Не меняется цена
« Ответ #9 : 07.08.2013, 16:45:23 »
Какой к вас шаблон? В оригинальном default такого эффекта не видел.
все по умолчанию, специально ничего не трогал, чтоб проверить этот "глюк". Поверх ВМ2 только установил аио и русифицировал ВМ2 и аио. В шаблонах тоже по умолчанию стоят шаблоны Beez_20 и Bluestork
думал может ява у меня на компе злится, но проверил на двую остальных, та же фигня..
*

chesster

  • Осваиваюсь на форуме
  • ***
  • 149
  • 0
Re: Не меняется цена
« Ответ #10 : 07.08.2013, 16:51:36 »
таксь, http://demo.virtuemart.net/index.php/2012-01-13-09-33-20/virtuemart-default-layout/mobile-phones/i9000-galaxy-s-detail тоже самое.. глюк не у меня
кто-то знает где можно посмотреть демо 1.9 vm?
« Последнее редактирование: 07.08.2013, 16:59:30 от chesster »
*

robert

  • Профи
  • ********
  • 4009
  • 371
Re: Не меняется цена
« Ответ #11 : 07.08.2013, 18:25:48 »
таксь, http://demo.virtuemart.net/index.php/2012-01-13-09-33-20/virtuemart-default-layout/mobile-phones/i9000-galaxy-s-detail тоже самое
Так это оф.демо сайт. Вы уверены, что такая фишка была в стандартном пакете VM2? Если да, то в какой версии?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

chesster

  • Осваиваюсь на форуме
  • ***
  • 149
  • 0
Re: Не меняется цена
« Ответ #12 : 07.08.2013, 20:58:18 »
Так это оф.демо сайт. Вы уверены, что такая фишка была в стандартном пакете VM2? Если да, то в какой версии?
в том, то и дело, что была.. не помню в какой версии, не факт что во 2й, может и в конце первых.
вы когда меняете количество товара в карточке на демке офсайта, у вас ничего с ценой не происходит? я в плане - визуально присмотритесь
*

chesster

  • Осваиваюсь на форуме
  • ***
  • 149
  • 0
Re: Не меняется цена
« Ответ #13 : 08.08.2013, 19:06:02 »
прочитано больше 100 раз.. народ, что никому не интересно?
*

robert

  • Профи
  • ********
  • 4009
  • 371
Re: Не меняется цена
« Ответ #14 : 10.08.2013, 00:47:20 »
в том, то и дело, что была.. не помню в какой версии, не факт что во 2й, может и в конце первых.
Не помню такую фишку во всех известных мне версиях.
вы когда меняете количество товара в карточке на демке офсайта, у вас ничего с ценой не происходит? я в плане - визуально присмотритесь
Ну да, срабатывает эффект jQuery fadeTo, когда выполняется комманда recalculate, которая пересчитывает цену в зависимости от аттрибутов.
« Последнее редактирование: 10.08.2013, 00:50:59 от robert »
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

zomby6888

  • Живу я здесь
  • ******
  • 1484
  • 167
Re: Не меняется цена
« Ответ #15 : 13.08.2013, 00:44:33 »
Ну да, эффект срабатывает, потом уходит AJAX запрос, который обрабатывает контроллер в controller\productdetails.php, который в свою очередь обращается к модели в файле models\product.php, в методе которого (О ужас!) вызывается метод из класса описанного в administrator\helpers\calculationh.php и называется getProductPrices. В нем идет обращение еще к каким то методам и возвращается массив цен.Только как он работает я пока еще толком не понял, но ошибка кроется где то там. У самого та же самая проблема, если разберусь то напишу здесь. В крайнем случае можно скрипт повесить который будет цену умножать.
интернет-блог: http://websiteprog.ru
*

fsv

  • Moderator
  • *****
  • 2506
  • 367
Re: Не меняется цена
« Ответ #16 : 13.08.2013, 02:20:20 »
прочитано больше 100 раз.. народ, что никому не интересно?
Интересно, конечно, о чем 17 сообщений. А то не понял.
"Цена" - стоимостная оценка единицы товара; она же - "Sales price" на оф.демо-сайте.
Заказать разработку:    расширения Joomla  |   интерфейсы на javascript(jQuery)  |  мобильные приложения
*

zomby6888

  • Живу я здесь
  • ******
  • 1484
  • 167
Re: Не меняется цена
« Ответ #17 : 13.08.2013, 07:09:18 »
В общем, как оказалось в VirtueMart не предусмотрена возможность изменять цену юнита, только в корзине можно увидеть итоговоую цену:
http://forum.virtuemart.net/index.php?topic=112155.msg377176#msg377176
Ну и фиг с ним сделаем сами. На форумах есть решения прописать в файл  components\com_virtuemart\controllers\productdetails.php в строку 296
Код
 
//VmConfig::$echoDebug = TRUE;
$prices = $product_model->getPrice ($virtuemart_product_id, $customPrices, $quantity);
                //добавить
                $prices['basePrice'] = $prices['basePrice'] * $quantity;
                $prices['basePriceWithTax'] = $prices['basePriceWithTax'] * $quantity;
                $prices['discountedPriceWithoutTax'] = $prices['discountedPriceWithoutTax'] * $quantity;
                $prices['salesPrice'] = $prices['salesPrice'] * $quantity;
                $prices['salesPriceWithDiscount'] = $prices['salesPriceWithDiscount'] * $quantity;
                $prices['taxAmount'] = $prices['taxAmount'] * $quantity;
                $prices['discountAmount'] = $prices['discountAmount'] * $quantity;
                $prices['basePriceWithTax'] = $prices['basePriceWithTax'] * $quantity;

Но это очень грязный подход, потому как мы вносим изменения в контроллер которые могут отменится при обновлении VirtueMart.
Поэтому я набросал жабаскрипт который можно добавить в шаблон. Если кому надо могу выложить.
« Последнее редактирование: 13.08.2013, 07:14:45 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

chesster

  • Осваиваюсь на форуме
  • ***
  • 149
  • 0
Re: Не меняется цена
« Ответ #18 : 15.08.2013, 16:22:59 »
Интересно, конечно, о чем 17 сообщений. А то не понял.
а как по мне, то я внятно, причем несколько раз, объяснил что я имел ввиду...
"Цена" - стоимостная оценка единицы товара; она же - "Sales price" на оф.демо-сайте.
что такое "Цена" я знаю, и после того как она берется напрямую из базы, то еще пересчитывается через фиг знает сколько функций.. и только потом "итог" пишется в HTML. Так вот этот "итог" должен меняться в зависимости от количества товара, который я указываю в окне товара, и причем не в корзине, а в том же окне и в то же время..

кароч, у меня уже такое чувство, или я на самом деле пытаюсь что-то доказать? зачем?)))) и зачем вы мне что-то доказываете? мне бы решение вопроса..

Ну да, эффект срабатывает, потом уходит AJAX запрос, который обрабатывает контроллер в controller\productdetails.php, который в свою очередь обращается к модели в файле models\product.php, в методе которого (О ужас!) вызывается метод из класса описанного в administrator\helpers\calculationh.php и называется getProductPrices. В нем идет обращение еще к каким то методам и возвращается массив цен.Только как он работает я пока еще толком не понял, но ошибка кроется где то там. У самого та же самая проблема, если разберусь то напишу здесь. В крайнем случае можно скрипт повесить который будет цену умножать.
во-во!! ну хоть вы меня поняли! я даже не уверен что это, ошибка, недоработка или так и должно быть..

Поэтому я набросал жабаскрипт который можно добавить в шаблон. Если кому надо могу выложить.
мне надо :)
*

zomby6888

  • Живу я здесь
  • ******
  • 1484
  • 167
Re: Не меняется цена
« Ответ #19 : 15.08.2013, 16:40:40 »
Пожалуйста. Вам нужен файл по адресу: templates\ваш шаблон\html\com_virtuemart\category\default.php. Если его нет то вручную создайте этот путь и скопируйте туда файл из папки components\com_virtuemart\views\category\tmpl\default.php. Можете конечно и его править но тогда при обновлении файл может переписатся. Добавьте туда в любое место (только не между тэгами <?php  и ?>) следующий код:
Код
<script type="text/javascript" language="JavaScript">
$(window).load(function () {
$("form.product").each(function() {
var form = jQuery(this);
var quantity=form.find('.quantity-input'), quantityInt = parseInt(quantity.val());
var plus = form.find('.quantity-plus');
var minus = form.find('.quantity-minus');
var id = form.find('input[name="virtuemart_product_id[]"]').val();
var prices = $("#productPrice" + id);
var stepval = form.find('input[name="quantity"]').val();
var step = (isNaN(parseInt(stepval)))? 1 : parseInt(stepval);
var datas = form.serialize();
plus.unbind('click');
minus.unbind('click');
var setvalue = function () {
$.getJSON(window.vmSiteurl + 'index.php?option=com_virtuemart&nosef=1&view=productdetails&task\
=recalculate&virtuemart_product_id='+id+'&format=json' + window.vmLang, encodeURIComponent(datas),
function (datas, textStatus) {
for (var key in datas) {
if (datas[key] != 0 && datas[key] != null) {
var pricestr = datas[key].match(/^[.]*([\d]+[\W]*[\d]*)(.*)/);
price = parseFloat(pricestr[1].replace(/[,]+/g, '.'));
currency = pricestr[2];
prices.find("span.Price"+key).html((price*quantityInt).toFixed(2)+currency);
}
}
});
}
plus.click(function() {
if (!isNaN(quantityInt)) {
quantityInt += step;
quantity.val(quantityInt);
}
setvalue();
});
minus.click(function() {
if (!isNaN(quantityInt) && quantityInt>step) {
quantityInt -= step;
quantity.val(quantityInt);
} else quantityInt = step;
setvalue();
});
});
});
</script>

Ах да, забыл . В моем случае корзина находится в просмотре категорий. в вашем случае она скорее всего находится по адресу: templates\ваш шаблон\html\com_virtuemart\productdetails\default.php  в шаблоне или в components\com_virtuemart\views\productdetails\tmpl\default.php. Добавляете скрипт туда.
« Последнее редактирование: 15.08.2013, 16:56:48 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

chesster

  • Осваиваюсь на форуме
  • ***
  • 149
  • 0
Re: Не меняется цена
« Ответ #20 : 15.08.2013, 17:58:57 »
в вашем случае она скорее всего находится по адресу: templates\ваш шаблон\html\com_virtuemart\productdetails\default.php  в шаблоне или в components\com_virtuemart\views\productdetails\tmpl\default.php. Добавляете скрипт туда.
чет не хочет работать, вообще без изменений.. пробую варианты
« Последнее редактирование: 15.08.2013, 18:13:35 от chesster »
*

fsv

  • Moderator
  • *****
  • 2506
  • 367
Re: Не меняется цена
« Ответ #21 : 15.08.2013, 19:30:51 »
Код: javascript
<div id="amountItem"></div>
<script type="text/javascript">
(function($) {
$(document).ready(function() {
amountItem();
$(".quantity-controls").click(function() {
setTimeout(function() { amountItem(); }, 500);
});
function amountItem() {
var price = parseFloat($("span.PricepriceWithoutTax").html().replace(/[^,\d]/g,'').replace(/,/g, '.'));
var qty = $(".quantity-input").val();
var amountItem = (price*qty).toFixed(2);
$("#amountItem").html(amountItem);
}
});
})(jQuery);
</script>
Заказать разработку:    расширения Joomla  |   интерфейсы на javascript(jQuery)  |  мобильные приложения
*

zomby6888

  • Живу я здесь
  • ******
  • 1484
  • 167
Re: Не меняется цена
« Ответ #22 : 15.08.2013, 20:56:42 »
чет не хочет работать, вообще без изменений.. пробую варианты
У вас какая версия VirtueMart? У меня вроде работает все.

С таймаутом тоже вариант, я сначало тоже так написал, но потом подумал что хз когда ответ на запрос вернется, вдруг сервак секунду думать будет, поэтому сделал анбинд и вручную отправку запроса, ну и запуск уже после load документа, чтобы скрип из vmprices.js его не опередил и не перезатер цены. В вашем случае это конечно не страшно, потому как у вас цена в отдельный блок пишется,  однако в таком случае придется править стили)
« Последнее редактирование: 15.08.2013, 21:08:38 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

zomby6888

  • Живу я здесь
  • ******
  • 1484
  • 167
Re: Не меняется цена
« Ответ #23 : 15.08.2013, 21:38:28 »
немного подправил скрипт, попробуйте так:
Код
<script type="text/javascript" language="JavaScript">
$(window).load(function () {
$("form.product").each(function() {
var form = jQuery(this);
var quantity=form.find('.quantity-input'), quantityInt = parseInt(quantity.val());
var plus = form.find('.quantity-plus');
var minus = form.find('.quantity-minus');
var id = form.find('input[name="virtuemart_product_id[]"]').val();
var prices = form.parents(".productdetails").find(".product-price");
if (0 == prices.length) {
prices = $("#productPrice" + id);
}
var stepval = form.find('input[name="quantity"]').val();
var step = (isNaN(parseInt(stepval)))? 1 : parseInt(stepval);
var datas = form.serialize();
plus.unbind('click');
minus.unbind('click');
var setvalue = function () {
$.getJSON(window.vmSiteurl + 'index.php?option=com_virtuemart&nosef=1&view=productdetails&task\
=recalculate&virtuemart_product_id='+id+'&format=json' + window.vmLang, encodeURIComponent(datas),
function (datas, textStatus) {
for (var key in datas) {
if (datas[key] != 0 && datas[key] != null) {
var pricestr = datas[key].match(/^[.]*([\d]+[\W]*[\d]*)(.*)/);
price = parseFloat(pricestr[1].replace(/[,]+/g, '.'));
currency = pricestr[2];
prices.find("span.Price"+key).html((price*quantityInt).toFixed(2)+currency);
}
}
});
}
plus.click(function() {
if (!isNaN(quantityInt)) {
quantityInt += step;
quantity.val(quantityInt);
}
setvalue();
});
minus.click(function() {
if (!isNaN(quantityInt) && quantityInt>step) {
quantityInt -= step;
quantity.val(quantityInt);
} else quantityInt = step;
setvalue();
});
});
});
</script>
интернет-блог: http://websiteprog.ru
*

chesster

  • Осваиваюсь на форуме
  • ***
  • 149
  • 0
Re: Не меняется цена
« Ответ #24 : 16.08.2013, 12:16:20 »
вчера что-то сделал, сегодня заработало  ;D
огромеднейшее спасибо!
*

STARKY

  • Новичок
  • *
  • 2
  • 0
Re: Не меняется цена
« Ответ #25 : 18.05.2015, 20:12:52 »
Добрый вечер! Такая же дилемма. Поставил на сайт custom fields fo rall v3.0.1, дабы было больше свободы с дополнительными полями. Поля работают, цена минусуется и все вроде бы ок, но вот цена только мигает и все. Ничего динамически не хочет меняться. Скрипты сверху пробовал, ничего, абсолютно никакой реакции, кроме мигания. VirtueMart 2.6.6. Можете кто-нибудь подсказать как решить данную бяду? ! ! !
*

BHy4eK

  • Осваиваюсь на форуме
  • ***
  • 110
  • 1
Re: Не меняется цена
« Ответ #26 : 27.07.2015, 16:50:23 »
zomby6888 Спасибо большое!
Кофе - лучший друг программиста!