yakutec Опубликовано 10 января, 2012 Жалоба Поделиться Опубликовано 10 января, 2012 По мотивам этого топика http://forum.simplacms.ru/comments.php?DiscussionID=745Задача проста, задать количество товарных позиций, перед тем как добавляем в корзину.В форме задал текстовое поле name="amount", но оттуда не забираются значение при помещении в корзину. Начал разбираться, добрался до скрипта /ajax/cart.php, который обрабатывает форму, там есть такая строка$simpla->cart->add_item($simpla->request->get('variant', 'integer'), $simpla->request->get('amount', 'integer'));через которую и задается количество товарных позиций ($simpla->request->get('amount', 'integer')), на сколько я понял. Я проверил свою теорию, заменив строку$simpla->cart->add_item($simpla->request->get('variant', 'integer'), $simpla->request->get('amount', 'integer'));на$simpla->cart->add_item($simpla->request->get('variant', 'integer'), 10);после нажатию на "Добавить в корзину", в корзину попало 10 товарных позиций. Я не остановился на этом, сделав, еще один опытhttp://***.ru/ajax/cart.php?variant=32&amount=15и добавил строку print_r($_SESSION);die($simpla->request->get('amount', 'integer')); в файл cart.php, обнаружил, что сумма обновляется, значение total_products - верное, но почему оно не срабатывает в нормальном режиме??? такое ощущение, что срабатывает постаякс какой-то =) Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 10 января, 2012 Жалоба Поделиться Опубликовано 10 января, 2012 Надо смотреть джаваскрипт-файл корзины, ПХП трогать вообще не надо Цитата Ссылка на сообщение Поделиться на другие сайты
yakutec Опубликовано 10 января, 2012 Автор Жалоба Поделиться Опубликовано 10 января, 2012 Косяк - прав))надо поправить в файле /js/ajax-cart.js на это// Аяксовая корзина$('form.cart').live('submit', function(e) { e.preventDefault(); var button = $(this).find('input[type=submit]');//здесь добавил var, это порочная практика делать глобальными переменные $.ajax({ url: "ajax/cart.php", data: { variant: $(this).find('select').val(), amount: $(this).find('input[name=amount]').val() }, dataType: 'json', success: function(data){ $('#cart_informer').html(data); if(button.attr('added_text')) button.val(button.attr('added_text')); } }); $(this).find('input[type=submit]').effect("transfer", { to: $("#cart_informer") }, 500); return false;}); Цитата Ссылка на сообщение Поделиться на другие сайты
alinamolchanova Опубликовано 11 января, 2012 Жалоба Поделиться Опубликовано 11 января, 2012 Это для какой версии если не секрет? Цитата Ссылка на сообщение Поделиться на другие сайты
yakutec Опубликовано 11 января, 2012 Автор Жалоба Поделиться Опубликовано 11 января, 2012 Аякс только во второй есть =) Цитата Ссылка на сообщение Поделиться на другие сайты
andrewftl Опубликовано 7 марта, 2012 Жалоба Поделиться Опубликовано 7 марта, 2012 Друзья, поделитесь пожалуйста, как ее интегрировать, что где изменять не совсем понятно понятно, может что-то упущено? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 7 марта, 2012 Жалоба Поделиться Опубликовано 7 марта, 2012 В шаблоне добавьте <input type="text" name="amount"/> и измените js код написанный выше=) Цитата Ссылка на сообщение Поделиться на другие сайты
skcmatt Опубликовано 7 марта, 2012 Жалоба Поделиться Опубликовано 7 марта, 2012 не получилось. КУДА вставить <input type=\"text\" name=\"amount\"/> ?Помогите Цитата Ссылка на сообщение Поделиться на другие сайты
skcmatt Опубликовано 7 марта, 2012 Жалоба Поделиться Опубликовано 7 марта, 2012 <!-- Выбор варианта товара --> <form class="variants" action="/cart"> <table> {foreach $product->variants as $v} <tr class="variant"> <td> <input id="discounted_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $v@first}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/> </td> <td> {if $v->name}<label class="variant_name" for="discounted_{$v->id}">{$v->name}</label>{/if} </td> <td> {if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if} <span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span> </td> </tr> {/foreach} </table> <input type="submit" class="button" value="в корзину" data-result-text="добавлено"/> </form> <!-- Выбор варианта товара (The End) -->КУДА ВПИСАТЬ? SIMPLA 2.1 Цитата Ссылка на сообщение Поделиться на другие сайты
granata005 Опубликовано 7 марта, 2012 Жалоба Поделиться Опубликовано 7 марта, 2012 Кто уже поставил? Где можно потестить пример работы? Цитата Ссылка на сообщение Поделиться на другие сайты
skcmatt Опубликовано 10 марта, 2012 Жалоба Поделиться Опубликовано 10 марта, 2012 у меня не получается! Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 10 марта, 2012 Жалоба Поделиться Опубликовано 10 марта, 2012 Я ставил, и не один раз.data: {variant: здесь код выбора варианта(зависит от версии),amount: $(this).find('input[name=amount]').val()},В шаблон добавляем в форму инпут, только без обратных слешей Цитата Ссылка на сообщение Поделиться на другие сайты
skcmatt Опубликовано 11 марта, 2012 Жалоба Поделиться Опубликовано 11 марта, 2012 Не получается. Цитата Ссылка на сообщение Поделиться на другие сайты
p1kka Опубликовано 9 апреля, 2012 Жалоба Поделиться Опубликовано 9 апреля, 2012 Что именно не получается? я поставил на 2.1 только что с первого раза. Цитата Ссылка на сообщение Поделиться на другие сайты
mickt Опубликовано 12 апреля, 2012 Жалоба Поделиться Опубликовано 12 апреля, 2012 Добрый день, не могли бы разжевать доходчиво как сделать форму для ручного ввода? Версия 2.1 ,поменял код в корзине /js/ajax-cart.js на тот, что был написан выше, в шаблон cart.tpl какова именно вида код должен быть form? Если не сложно скиньте кусок кода которым нужно заменить select стоящий по умолчанию. Цитата Ссылка на сообщение Поделиться на другие сайты
katrukhin Опубликовано 17 апреля, 2012 Жалоба Поделиться Опубликовано 17 апреля, 2012 Добрый день, как и все я заменил код в /js/ajax-cart.jsПример моего кода: $('form.cart').live('submit', function(e) { e.preventDefault(); button = $(this).find('input[type="submit"]'); $.ajax({ url: "ajax/cart.php", data: { variant: $(this).find('select').val()}, amount: $(this).find('input[name="amount"]').val(), dataType: 'json', success: function(data){ $('#cart_informer').html(data); if(button.attr('added_text')) button.val(button.attr('added_text')); } }); $(this).find('input[type="submit"]').effect("transfer", { to: $("#cart_informer") }, 500); return false; });Затем в products.tpl добавил такой код <form class="variants" action="/cart"> <input type="text" name="amount" value="10"> <input type="submit" class="order_button" value="" data-result-text=""/> </form>И к сожалению не реагирует, при клике вместо 10 товаров, заносит 1.Еще я не понимаю связки /js/ajax-cart.js - данного файла и CMS. Так как когда начал проверять скрипты связанные с корзиной увидел что шаблон вообще обрабатывает другой скрипт design/{$settings->theme}/js/ajax_cart.jsМожет все так и нужно, просто хотелось бы узнать почему, именно тот скрипт, где к нему обращение идет. И почему изменив все данные что вы указали выше, все так и не работает. Может где то не понял Вас?За ранее спасибо! Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 17 апреля, 2012 Жалоба Поделиться Опубликовано 17 апреля, 2012 $('form.cart').live('submit', function(e) { и form class=\"variants\" action=\"/cart\"Почувствуйте разницу Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 17 апреля, 2012 Жалоба Поделиться Опубликовано 17 апреля, 2012 В версии 2.1 ajax_cart.js помещен в шаблон, а тот что находится в js корня сайта остался от предыдущих версий Цитата Ссылка на сообщение Поделиться на другие сайты
katrukhin Опубликовано 17 апреля, 2012 Жалоба Поделиться Опубликовано 17 апреля, 2012 Ну, я об этом написал выше, что данный код изменил, но ничего не происходит. Цитата Ссылка на сообщение Поделиться на другие сайты
katrukhin Опубликовано 17 апреля, 2012 Жалоба Поделиться Опубликовано 17 апреля, 2012 ajax_cart.js из шаблонаГде была строка с датой, дописал:data: {variant: $(this).find('input[name=variant]:checked').val(), amount: $(this).find('input[name="amount"]').val()},... но толку до сих пор нет, может пхп должен где то принять это значение?П.с. полный код скрипта из шаблона:// Аяксовая корзина$('form.variants').live('submit', function(e) { e.preventDefault(); button = $(this).find('input[type=submit]'); $.ajax({ url: "ajax/cart.php", data: {variant: $(this).find('input[name=variant]:checked').val(), amount: $(this).find('input[name=amount]').val()}, 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;}); Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 17 апреля, 2012 Жалоба Поделиться Опубликовано 17 апреля, 2012 Вы изменили код в /js/ajax_cart.js а надо в /шаблон/js/ajax_cart.js Цитата Ссылка на сообщение Поделиться на другие сайты
katrukhin Опубликовано 17 апреля, 2012 Жалоба Поделиться Опубликовано 17 апреля, 2012 И там заменил и там менял, даже полностью код из первого во второй переносил. файл в корне называется ajax-cart.js а в шаблоне ajax_cart.jsПосмотрите я выше привел пример кода яваскрипта из шаблона, где и указал amount Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 17 апреля, 2012 Жалоба Поделиться Опубликовано 17 апреля, 2012 Странно однако, только что заменил строку в 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()},в products.tpl добавил < input type="text" name="amount" value="10">и все работает Цитата Ссылка на сообщение Поделиться на другие сайты
katrukhin Опубликовано 17 апреля, 2012 Жалоба Поделиться Опубликовано 17 апреля, 2012 Да вы правы, все работает, проверил на дефолтном (defoult) шаблоне.Большое спасибо, пойду разбираться, почему не работает на моем шаблоне. Цитата Ссылка на сообщение Поделиться на другие сайты
katrukhin Опубликовано 17 апреля, 2012 Жалоба Поделиться Опубликовано 17 апреля, 2012 На будущее, остальным: Моя проблема заключалась в том, что у меня в середине формы было закрытие дива, который был объявлен не в форме. Из-за него был сбой.Всем Спасибо! Удачных проектов и интересных разработок! Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.