Jump to content

Аякс перезагрузка данных в корзине


Recommended Posts

Здравствуйте, хорошим людям!

У меня возникла интересная проблема, которую я бы хотел по скорее решить, видимо без Вас мне это "по скорее" будет сложно достигнуть, проблема в следующем:

На сайте http://pol-art.ru, при переходе в корзину после добавления товара, в столбце "Треб. кол-во (м2)" необходимо ввести цифры, система непосредственно пересчитывает в деньги и в "Фактич. кол-во (м2)", а именно проблема заключается, что данные пересчитывает верно, но не нравится, что в "итого" пересчитывается без перезагрузки страницы, а "Фактич. кол-во (м2)", только с перезагрузкой. Есть подозрения на файл, в котором я реализовывал формулу для корректного пересчета, как мне необходимо, он находится в classes/cart.php, а именно

 

$row['total_wt'] = ($row['price_wt'] * $row['weight']) * ceil((int)($row['cart_quantity']) / $row['weight']);

 

$row['total_wt_metr'] = ($row['weight']) * ceil((int)($row['cart_quantity']) / $row['weight']);

 

Где total_wt_metr - Фактич. кол-во (м2)

 

Спасите пожалуйста!

 

Забыл упомянуть, что вставил {$product.total_wt_metr} в shopping-cart-product-line.tpl

Cart.php

Link to comment
Share on other sites

Имхо, есть 2 варианта, если бы такая задача стояла передо мной:

1. сделать расчет формул в js повесит на onchange и забыть

2. пойти идеологически более верным путем, заглянуть в ajax-cart.js

и увидеть

// cart to fix display when using back and previous browsers buttons
refresh : function(){
 //send the ajax request to the server
 $.ajax({
  type: 'GET',
  url: baseDir + 'cart.php',
  async: true,
  cache: false,
  dataType : "json",
  data: 'ajax=true&token=' + static_token,
  success: function(jsonData)
  {
   ajaxCart.updateCart(jsonData);
  },

 

понять что вызывается корзино-контроллер ( :D премного уважаемый вагоно-уважатый (с) ) а результат обрабатывается ajaxCart.updateCart(jsonData);

пойти в controllers/CartController.php и увидеть


$this->preProcess();
if (Tools::getValue('ajax') == 'true')
{
if (Tools::getIsset('summary'))
{
$result = array();
.....
.....
$result['summary'] = self::$cart->getSummaryDetails();
$result['customizedDatas'] = Product::getAllCustomizedDatas((int)(self::$cart->id));
$result['HOOK_SHOPPING_CART'] = Module::hookExec('shoppingCart', $result['summary']);
$result['HOOK_SHOPPING_CART_EXTRA'] = Module::hookExec('shoppingCartExtra', $result['summary']);
die(Tools::jsonEncode($result));

сделать необходимые вычисление и передать их в result

затем снова заглянуть в js, увидеть что картАпдейт вызывает updateCartEverywhere

и уже в ней дописать строку вида

 

$('.cart_quantity2').text(jsonData.productQuantity2);

 

где productQuantity2 - это полученный из корзино-контроллера результат ( $result['productQuantity2'] )

 

П.С. странно почему обращение $('.cart_quantity2') идет по классу, по айди было бы быстрее.. но видимо при таких размерах кода - несущественно

Link to comment
Share on other sites

я плохо понимаю, SergeyH, подскажи, пожалуйста как все это поэтапно не для программиста, на уровне сходи до файла, вставь вот этот код или замени, а потом... Я безумно буду благодарен, хотя и так тоже благодарен, вот как я разволновался, что аж перешел на беспонтовую лесть.

Link to comment
Share on other sites

Код писать мне лень, хотя там и писать нечего, в первом посте вот это

я реализовывал формулу для корректного пересчета

предполагало что навыки есть

Link to comment
Share on other sites

×
×
  • Create New...