shopcreator.com.ua 0 Опубликовано 8 мая, 2009 Жалоба Share Опубликовано 8 мая, 2009 Не знаю, в тот ли раздел. Возможно, нужно было в "проблемы и решения" кинуть, чтобы люди могли при необходимости найти... Итак. Есть у нас AJAX добавление в корзину, но нет AJAX удаления из корзины. Решил исправить этот непорядок. :) В общем, к делу: 1. в /templates/vamshop/source/boxes/shopping_cart.php строка 33-39 заменить for ($i = 0, $n = sizeof($products); $i < $n; $i ++) { $qty += $products[$i]['quantity']; $products_in_cart[] = array ('QTY' => $products[$i]['quantity'], 'LINK' => vam_href_link(FILENAME_PRODUCT_INFO, vam_product_link($products[$i]['id'],$products[$i]['name'])), 'NAME' => $products[$i]['name']); }[/code] на [code] for ($i = 0, $n = sizeof($products); $i < $n; $i ++) { $qty += $products[$i]['quantity']; // Push all attributes information in an array $product_attributes = ""; $product_attributes_in_cart = ""; if (isset ($products[$i]['attributes'])) { while (list ($option, $value) = each($products[$i]['attributes'])) { //$hidden_options .= vam_draw_hidden_field('id['.$products[$i]['id'].']['.$option.']', $value); $attributes = vam_db_query("select popt.products_options_name, popt.products_options_type, poval.products_options_values_name, pa.options_values_price, pa.price_prefix,pa.attributes_stock,pa.products_attributes_id,pa.attributes_model , pa.options_values_id from ".TABLE_PRODUCTS_OPTIONS." popt, ".TABLE_PRODUCTS_OPTIONS_VALUES." poval, ".TABLE_PRODUCTS_ATTRIBUTES." pa where pa.products_id = '".$products[$i]['id']."' and pa.options_id = '".$option."' and pa.options_id = popt.products_options_id and pa.options_values_id = '".$value."' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '".(int) $_SESSION['languages_id']."' and poval.language_id = '".(int) $_SESSION['languages_id']."'"); $attributes_values = vam_db_fetch_array($attributes); if($attributes_values['products_options_type']=='2' || $attributes_values['products_options_type']=='3'){ $hidden_options .= vam_draw_hidden_field('id[' . $products[$i]['id'] . '][txt_' . $option . '_'.$value.']', $products[$i]['attributes_values'][$option]); $attr_value = $products[$i]['attributes_values'][$option]; }else{ $hidden_options .= vam_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $value); $attr_value = $attributes_values['products_options_values_name']; } $product_attributes[$option]['NAME'] = $attributes_values['products_options_name']; $product_attributes[$option]['VALUE'] = $attributes_values['products_options_values_name']; $product_attributes_in_cart .= vam_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $attributes_values['options_values_id']); } } // Push all attributes information in an array $products_in_cart[] = array ('QTY' => $products[$i]['quantity'], 'PRICE' => "$ " . ($products[$i]['price'] * $products[$i]['quantity']), 'LINK' => vam_href_link(FILENAME_PRODUCT_INFO, vam_product_link($products[$i]['id'],$products[$i]['name'])), 'PRODUCTS_QTY' => $product_attributes_in_cart . vam_draw_hidden_field('cart_quantity[]', $products[$i]['quantity'] - 1) . vam_draw_hidden_field('products_id[]', $products[$i]['id']) . vam_draw_hidden_field('old_qty[]', $products[$i]['quantity']) . ($products[$i]['quantity'] < 2 ? vam_draw_hidden_field('cart_delete[]', $products[$i]['id']) : ''),'ATTRIBUTES' => $product_attributes, 'NAME' => $products[$i]['name']); } 2. /templates/vamshop/boxes/box_cart.html строка 16 после {$products_data.QTY} x <a href="{$products_data.LINK}" title="{$products_data.NAME}">{$products_data.NAME|vam_truncate:$smarty.const.MAX_DISPLAY_CART:"...":true}</a>[/code] добавить [code]<form id="cart_quantity" action="{$products_data.LINK}/action/update_product" method="POST" onsubmit="doDelProduct(this); return false;">{$products_data.PRODUCTS_QTY}<input type="image" src="images/deletebut.png" width="19" height="19" border="0" title="" /></form> 3. /jscript/jscript_ajax_cart.js в самом конце файла добавить функцию function doDelProduct(form) { showLoading(); var reqAddCart = new JsHttpRequest(); reqAddCart.onreadystatechange = function() { if (reqAddCart.readyState == 4) { if (reqAddCart.responseJS) { document.location.href = reqAddCart.responseJS.ajax_redirect; return; } else { document.getElementById('divShoppingCart').innerHTML = ''+(reqAddCart.responseText||'')+'' if ( SHOW_ADDED ) { showOk(); timerID = setTimeout( "addHandler(document, \'mousemove\', hideOk)", 500); } } } } var senddata = new Object(); var fe = form.elements; for(var i=0 ; i<fe.length ; i++) { if ( fe[i].type=="hidden" ) { senddata[fe[i].name] = fe[i].value; } } var url = 'ajax_shopping_cart.php?' + ( senddata["products_id[]"] ? 'products_id[]='+senddata["products_id[]"]+'&' : "" ) + ( senddata["old_qty[]"] ? '&old_qty[]='+senddata["old_qty[]"]+'&' : "" ) + ( senddata["cart_quantity[]"] ? '&cart_quantity[]='+senddata["cart_quantity[]"]+'&' : "" ) + ( senddata["cart_delete[]"] ? '&cart_delete[]='+senddata["cart_delete[]"]+'&' : "" ) + 'action=update_product'; reqAddCart.caching = false; reqAddCart.open( 'GET', url, true); reqAddCart.send( senddata ); return false;}[/code] 4. /includes/cart_actions.php строка 72 заменить [code] case 'update_product' : for ($i = 0, $n = sizeof($_POST['products_id']); $i < $n; $i++) { if (in_array($_POST['products_id'][$i], (is_array($_POST['cart_delete']) ? $_POST['cart_delete'] : array ()))) { $_SESSION['cart']->remove($_POST['products_id'][$i]); } else { if ($_POST['cart_quantity'][$i] > MAX_PRODUCTS_QTY) $_POST['cart_quantity'][$i] = MAX_PRODUCTS_QTY; $attributes = ($_POST['id'][$_POST['products_id'][$i]]) ? $_POST['id'][$_POST['products_id'][$i]] : ''; $_SESSION['cart']->add_cart($_POST['products_id'][$i], vam_remove_non_numeric($_POST['cart_quantity'][$i]), $attributes, false); } } vam_redirect(vam_href_link($goto, vam_get_all_get_params($parameters))); break; // customer adds a product from the products page на case 'update_product' : foreach( $_REQUEST as $key => $value) $_POST[$key]=$value; for ($i = 0, $n = sizeof($_POST['products_id']); $i < $n; $i++) { if (in_array($_POST['products_id'][$i], (is_array($_POST['cart_delete']) ? $_POST['cart_delete'] : array ()))) { $_SESSION['cart']->remove($_POST['products_id'][$i]); } else { if ($_POST['cart_quantity'][$i] > MAX_PRODUCTS_QTY) $_POST['cart_quantity'][$i] = MAX_PRODUCTS_QTY; $attributes = ($_POST['id'][$_POST['products_id'][$i]]) ? $_POST['id'][$_POST['products_id'][$i]] : ''; $_SESSION['cart']->add_cart($_POST['products_id'][$i], vam_remove_non_numeric($_POST['cart_quantity'][$i]), $attributes, false); } } vam_redirect(vam_href_link($goto, vam_get_all_get_params($parameters))); break; // customer adds a product from the products page[/code] НО, это еще не все. Так же в корзине нет отображения аттрибутов продукта. К примеру, есть у нас джинсы, разного размера, и разного цвета. Получается, Продукт: "джинсы", аттрибут "цвет" (к примеру), значения аттрибутов: 1. черный, 2. синий, 3. белый. Так вот, если положить в корзину одни и те же джинсы, но разного размера, да, отображаются 2 товара, но с одним названием - джинсы (а какие выбраны - неясно). Считаю это существенным недостатком. Поэтому его тоже поправил. Итак. 1. Сделать п. 1 (из AJAX удаления из корзины). Конечно, если вы его не делали. 2. /templates/vamshop/boxes/box_cart.html строка 16 после [code]{$products_data.QTY} x <a href="{$products_data.LINK}" title="{$products_data.NAME}">{$products_data.NAME|vam_truncate:$smarty.const.MAX_DISPLAY_CART:"...":true}</a> добавить {if $products_data.ATTRIBUTES!=''} <table width="100%" border="0" cellspacing="0" cellpadding="0"> {foreach key=key_data item=item_data from=$products_data.ATTRIBUTES} <tr> <td>{$item_data.NAME}: {$item_data.VALUE}</td> </tr> {/foreach} </table> {/if}[/code]В живую работоспообность обоих дополнений можно посмотреть здесь: http://miu.com.ua/product_info.php/info/p1_Lee-Original-Jeans.html (если реклама - удалите, хотя сайт тестовый). Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 8 мая, 2009 Жалоба Share Опубликовано 8 мая, 2009 Спасибо большое. В принципе, если глючить не будет, наверное можно будет и по умолчанию в магазин добавить. Вообще бокс корзина задумывался как укороченный вариант чтоли, т.е. только краткая информация, а уже все подробности на странице корзина - shopping_cart.php Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 8 мая, 2009 Жалоба Share Опубликовано 8 мая, 2009 Кстати, красивый магазин http://miu.com.ua Прям загляденье. Только что-то кнопка Добавить в корзину не работает, вот по той ссылке, что Вы привели. Нажимаю добавить и ничего не происходит. Ссылка на сообщение Поделиться на другие сайты
shopcreator.com.ua 0 Опубликовано 12 мая, 2009 Автор Жалоба Share Опубликовано 12 мая, 2009 Цитата Спасибо большое. В принципе, если глючить не будет, наверное можно будет и по умолчанию в магазин добавить. Вообще бокс корзина задумывался как укороченный вариант чтоли, т.е. только краткая информация, а уже все подробности на странице корзина - shopping_cart.php Я только "за". :) Цитата Кстати, красивый магазин http://miu.com.ua Прям загляденье. Спасибо! :) Цитата Только что-то кнопка Добавить в корзину не работает, вот по той ссылке, что Вы привели. Нажимаю добавить и ничего не происходит. Странно. Только что проверил в ИЕ8, ФФ и Опере - у меня добавление работает. Да и саму форму добавления {$FORM_ACTION}{$ADD_QTY}{$ADD_CART_BUTTON}{$FORM_END}[/code]я не трогал, не переопределял (только графическую кнопку заменил).Правда нашел небольшую недоработку, но ее уже исправил выше. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 13 мая, 2009 Жалоба Share Опубликовано 13 мая, 2009 Хорошо, спасибо большое. Обязательно проверю код и если всё нормально работает, скорей всего, добавлю по умолчанию в магазин в следующей версии. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 29 июня, 2009 Жалоба Share Опубликовано 29 июня, 2009 Добавил по умолчанию данный код в магазин. Будет в следующей версии VaM Shop 1.52. Ещё раз спасибо shopcreator.com.ua Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 2 июня, 2016 Жалоба Share Опубликовано 2 июня, 2016 а что может быть ? при добавлении 1 товара в аякс корзину он добавляется норм. если добавлять в количестве 2 или большее то добавляется вообще не этот товар и цена не его. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 2 июня, 2016 Жалоба Share Опубликовано 2 июня, 2016 Дайте ссылку на страницу где можно попробовать этот глюк в действии. Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 2 июня, 2016 Жалоба Share Опубликовано 2 июня, 2016 http://canape.su/kanape.html вот закажите пару чего то http://canape.su/kanape-s-salom-15sht.html вот например несколько таких закажите. ну или любых других Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 2 июня, 2016 Жалоба Share Опубликовано 2 июня, 2016 Так у Вас там совсем переделано всё, вроде как. Может где-то что-то наисправляли?! Добавил две штуки http://canape.su/kanape-s-salom-15sht.html Вроде нормально. Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 2 июня, 2016 Жалоба Share Опубликовано 2 июня, 2016 ясно ! лан будемс разбираться ! Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 2 июня, 2016 Жалоба Share Опубликовано 2 июня, 2016 Удачи. Вы для начала проверьте на демке demo.vamshop.ru , есть ли там глюк. Что б хотя бы понять, есть такая проблема в версии по умолчанию, или это уже в каких-то Ваших правках дело. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения