0 Пользователей и 1 Гость просматривают эту тему.
  • 59 Ответов
  • 23196 Просмотров
*

blark

  • Новичок
  • 1
  • 2 / 0
AJAX корзина
« : 14.05.2011, 21:02:37 »
Хочу поделится. сделал для себя.
Работает, но еще требует некоторого "причесывания".

п.0. Что имеем:

п.0.1. В /templates/default/category/category_default.php генерируется форма для каждого товара:
Код: html4strict
<form name = "product" method = "post" action = "<?php print $this->action?>" >
                            
                                <input type = "text" name = "quantity"  value="1"  />
<input type = "submit" value = "<?php print _JSHOP_ADD_TO_CART?>" onclick="jQuery('#to').val('cart')"/>
<input type="hidden" name="to" id='to' value="cart" />
<input type = "hidden" name = "product_id"  value = "<?php print $product->product_id?>" />
<input type = "hidden" name = "category_id"  value = "<?php print $this->category->category_id?>" />
</form>

п.0.2 В /controllers/category.php в function view() строка:
Код: php
$view->assign('action', SEFLink('index.php?option=com_jshopping&controller=cart&task=add'));
то что делать форме когда нажат submit.

п.1.1 Сам js выглядит так:
Код: javascript
<script>jQuery(document).ready(function(){
jQuery('form').submit(function() {      //реагируем на submit
if(jQuery(this).data('formstatus')!== 'submitting'){ // проверяем статус, чтобы избежать множественной отправки формы

var str = jQuery(this).serialize();  //собираем данные из input'ов в строку
jQuery(this).data('formstatus','submitting');
jQuery.ajax({
type: "POST",
url: "<?php print $this->action?>",
data: str,
datatype:'json',
//beforeSend: function(x){jQuery('#ajax-loader').css('visibility','visible');}, необязательная строка. показываем лоадер пользователю
success: function(data){ //принимаем информацию (см. п. 1.2.1 и 1.2.2  (echo json_encode(...)) )
switch(data.status){
case 0://если статус 0 - значит была ошибка
alert(data.msg); //выводим алерт, но можно использовать prompt (всплывающее окно, см ниже)
break;
case 1:
jQuery('#ajax-loader').css('visibility','hidden');
jQuery("#jshop_module_cart").fadeOut("fast",function(){
jQuery("#jshop_module_cart .empty").hide(); /
jQuery('#jshop_module_cart .corzina').css('display','inline');
jQuery("#jshop_module_cart .count").empty();
jQuery("#jshop_module_cart .count").append(data.count_product + ' на сумму ' + data.price ); //выгружаем данные от сервера в элемент с классом count и родительским элементом с id jshop_module_cart
});
jQuery("#jshop_module_cart").fadeIn();
jQuery.prompt('Товар добавлен в корзину', //всплывающее окно (см. п.3)
{
buttons: { "Продолжить": 1, "В корзину": 2 },
timeout: 3000,
submit:function(v,m,f){
if(v==1) jQuery.prompt.close()
else if(v=2)
window.location.href = "<?php print SEFLink('index.php?option=com_jshopping&controller=cart&task=view', 1)?>";
}
});
break;
                    }
},
error: function(data) {
alert("Сервер не отвечает");
}

});
jQuery(this).data('formstatus','idle');
}  
   return false;

});
});
</script>

п.1.2 Серверная сторона запроса
 
п.1.2.1 в /controllers/cart.php в function add() после 43 строки добавляем:
Код: php
if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

header("Content-Type: json/html; charset=utf-8");
$msg_txt= array( 'status'=>1, 'count_product'=>$cart->count_product, 'price'=>formatprice($cart->getSum(0,1)) );
echo json_encode($msg_txt);
die();
}
проверяем если это AJAX запрос, то отдаем JS скрипту данные

п.1.2.2 в /models/cart.php в function add($product_id, $quantity, $attr_id, $freeattributes) после 498 строки (начинается с JError:raiseWarning) добавляем:
Код: php
if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
header("Content-Type: json/html; charset=utf-8");
                    $status=0;
                    $msg = "В корзине находится максимально доступное количество товара";
                    echo json_encode(array("status"=>$status, "msg"=>$msg));
                    die();
}
и еще раз добавляем там же в районе 534 строки ( после строки JError:raiseWarning)

п.2 Куда будем выводить?

/modules/mod_jshopping_cart/tmpl/default.php
Здесь верстаем нашу мини корзину, какой хотим ее видеть. И под шаблон уже правим JS (п.1.1)
Я сделал так:
Код: html4strict
<h3>Корзина:</h3>
<div id = "jshop_module_cart" class = "vmCartModule">
<span class="empty" <?php if ($cart->count_product>0){ ?> style="display:none;"<?php }?>>Корзина пуста</span>
<div class="corzina" <?php if ($cart->count_product==0){ ?> style="display:none;"<?php }?>>
<span class="count"><?php print $cart->count_product?> на сумму <?php print formatprice($cart->getSum(0,1))?></span>
<span><a href = "<?php print SEFLink('index.php?option=com_jshopping&controller=cart&task=view', 1)?>"><?php print "Перейти"?></a></span>
</div>      
 </div>

п.3
Скрипт я разместил прямо в /templates/default/category/category_default.php
Для всплывающего окна с информацией "Товар добавлен", использовал Impromptu
подключается так:
Код: javascript
<script src="http://www.trentrichardson.com/Impromptu/scripts/jquery-impromptu.3.1.min.js" type="text/javascript"></script>
css окна настроил под себя. На сайте есть информация.

С отключенным JS корзина работает, как обычно. Т.е. здесь добавлен только JS скрипт, который перехватывает сабмит, берет данные из формы, кидает их серверу, php скрипты jshopping'a отрабатывают свою часть и посылают информацию о количестве товара и его суммарной стоимости (можно получить и другие данные) обратно js скрипту, который выводит это в мини корзину без обновления страницы.

Вроде бы ничего не забыл. Рад любой помощи в оптимизации и "доведения до ума"
« Последнее редактирование: 14.05.2011, 21:25:06 от blark »
*

Shin

  • Новичок
  • 5
  • 1 / 0
Re: AJAX корзина
« Ответ #1 : 17.06.2011, 07:13:16 »
C первого раза не получилось. Выводит весь код страницы. Буду пробовать еще. По-моему. это единственный недостаток компонента - отсутствие добавления AJAX ом в корзину .
*

ShadowXak

  • Завсегдатай
  • 1602
  • 162 / 6
  • no more programming
Re: AJAX корзина
« Ответ #2 : 17.06.2011, 08:26:39 »
Код: javascript
<script src="http://www.trentrichardson.com/Impromptu/scripts/jquery-impromptu.3.1.min.js" type="text/javascript"></script>
я конечно все понимаю, но рекомендую не подключать скрипт таким образом, по сл. соображениям:
1. что будит если сайт на котором лежит скрипт будит недоступен?
2. что если до сайта будит большой пинг и работа вашего сайта будит тормозить из-за этого?
3. что если разработчики просто удалят библиотеку или сменять путь до нее?

проще скачать библиотечку к себе и подключать ее уже через себя.
прикладываю к своему сообщению данную библиотечку после скачивания поменять расширение с txt на js

[вложение удалено Администратором]
*

Shin

  • Новичок
  • 5
  • 1 / 0
Re: AJAX корзина
« Ответ #3 : 18.06.2011, 05:11:01 »
Чтобы заработало заменил
Код: php
$view->assign('action', SEFLink('index.php?option=com_jshopping&controller=cart&task=add'));
на
Код: php
$view->assign('ajxaction', SEFLink('index.php?option=com_jshopping&controller=cart&task=add'));
ибо actiоn в скрипте уже есть.

Соответственно заменил
Код: html4strict
<form name = "product" method = "post" action = "<?php print $this->action?>" >
на
Код: html4strict
<form name = "product" method = "post" action = "<?php print $this->ajxaction?>" >

Javascript не отрабатывал пока не заменил
Код: javascript
datatype:'json',
на
Код: javascript
dataType:'json',

Чтобы вынести javascript в файл js/function.js добавил в  форму
Код: html4strict
<input type="hidden" name="ajxurl" class="ajxurl" value="<?php print $this->ajxaction?>" />
и заменил в javascript
Код: javascript
url: "<?php print $this->action?>",
на
Код: php
url: jQuery('.ajxurl').val(),

Все это работает, если в товаре нет атрибутов, которые нужно выбрать. Если они есть, нужно прятать кнопку.
*

evpadallas

  • Захожу иногда
  • 169
  • 42 / 1
Re: AJAX корзина
« Ответ #4 : 08.07.2011, 13:28:26 »
Это в какой версии магазина? У меня под J!1.6. Или я недопонял ничего, или в 3-й линейке нет такого...
Спасибо принимаю E205239561513 R332836763680 U328765353131 Z420580779658 + в репу тоже не плохо.
Сайт на Joomla! любой конфигурации за 5 минут!
*

victorantoniak

  • Moderator
  • 1534
  • 182 / 2
  • JoomShopping Team
Re: AJAX корзина
« Ответ #5 : 08.07.2011, 23:33:06 »
2.9.0 = 3.2.0

Версии одинаковые (99%)
*

altvvc

  • Давно я тут
  • 522
  • 22 / 0
Re: AJAX корзина
« Ответ #6 : 19.07.2011, 10:14:36 »
Можете патч готовый выложить. Что то запутался я в коде.
Красота спасет мир, а пофигизм спасет нервы.
*

darknefrit

  • Захожу иногда
  • 62
  • 1 / 0
  • Мечтай так как будто будешь жить вечно
Re: AJAX корзина
« Ответ #7 : 05.10.2011, 16:33:33 »
Не похоже что версии одинаковые, то что в первом посте написано относительно category_default.php  это в product_default.php и остальное тоже не понял куда что писать :( А очень нужно
*

vilena26

  • Захожу иногда
  • 95
  • 14 / 0
Re: AJAX корзина
« Ответ #8 : 19.11.2011, 15:36:03 »
blark, А можете дать ссылку на ваш сайт, чтобы посмотреть что получилось?  ;)
*

Gr1m0n

  • Осваиваюсь на форуме
  • 25
  • 0 / 1
Re: AJAX корзина
« Ответ #9 : 19.11.2011, 16:07:57 »
Я тут в соседней теме выложил модуль для Joomla 1.6 - 1.7 Корзина с AJAX.
http://narod.ru/disk/31804034001/mod_ice_jshopping_cart_v.1.7.0.zip.html
*

nevigen

  • Moderator
  • 10260
  • 855 / 25
  • http://n*****n.com
Re: AJAX корзина
« Ответ #10 : 19.11.2011, 23:33:17 »
Языковой файл русский поправить бы ;)
И название, да и содержимое от инглиша отличается существено ;)
Из-за названия ленг файла не ставится русик;) Поправите и будет ГУТ ;)

Прикольный модуль. Название очень смахивает на АйсТемовское... ;)
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

vilena26

  • Захожу иногда
  • 95
  • 14 / 0
Re: AJAX корзина
« Ответ #11 : 19.11.2011, 23:44:12 »
А что-то подобное для жумла 1.5 нету случайно?  ;)
*

evpadallas

  • Захожу иногда
  • 169
  • 42 / 1
Re: AJAX корзина
« Ответ #12 : 24.12.2011, 23:09:09 »
Gr1m0n: Супер модуль! Спасибо!  :D  *DRINK*
Спасибо принимаю E205239561513 R332836763680 U328765353131 Z420580779658 + в репу тоже не плохо.
Сайт на Joomla! любой конфигурации за 5 минут!
*

darknefrit

  • Захожу иногда
  • 62
  • 1 / 0
  • Мечтай так как будто будешь жить вечно
Re: AJAX корзина
« Ответ #13 : 25.12.2011, 11:21:17 »
а как сделать чтобы при нажатии на кнопочку купить, товар добавлялся бы в корзину но страница не перезагружалась и не появлялась надпись товар добавлен в корзину?

 а лучше чтоб загружалась предыдущая страница со списком товаров

« Последнее редактирование: 26.12.2011, 12:28:28 от darknefrit »
*

ghio

  • Захожу иногда
  • 102
  • 0 / 0
Re: AJAX корзина
« Ответ #14 : 04.02.2012, 19:32:04 »
Языковой файл русский поправить бы ;)
И название, да и содержимое от инглиша отличается существено ;)
Из-за названия ленг файла не ставится русик;) Поправите и будет ГУТ ;)

Прикольный модуль. Название очень смахивает на АйсТемовское... ;)
у меня тоже не работает русский, вроде файл подправила, а почему не срабатывает, не пойму, вы как решили эту проблему?
*

ghio

  • Захожу иногда
  • 102
  • 0 / 0
Re: AJAX корзина
« Ответ #15 : 08.02.2012, 14:53:21 »
Я тут в соседней теме выложил модуль для Joomla 1.6 - 1.7 Корзина с AJAX.
http://narod.ru/disk/31804034001/mod_ice_jshopping_cart_v.1.7.0.zip.html
jquery не срабатывает, если перезагружаешь страницу, русский язык работает, только если в корзине ничего нет, когда добавляешь товар, снова инглиш... как исправить?
*

shibaevvv

  • Захожу иногда
  • 60
  • 4 / 0
Re: AJAX корзина
« Ответ #16 : 27.02.2012, 23:26:40 »
Код
<input type = "submit" value = "<?php print _JSHOP_ADD_TO_CART?>" onclick="jQuery('#to').val('cart')"/> 
подскажите, а этот инпут можно как-то заменить на ссылку?
*

chobitok

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: AJAX корзина
« Ответ #17 : 02.03.2012, 03:59:17 »
Цитировать
я конечно все понимаю, но рекомендую не подключать скрипт таким образом, по сл. соображениям:
1. что будит если сайт на котором лежит скрипт будит недоступен?
2. что если до сайта будит большой пинг и работа вашего сайта будит тормозить из-за этого?
3. что если разработчики просто удалят библиотеку или сменять путь до нее?

проще скачать библиотечку к себе и подключать ее уже через себя.
прикладываю к своему сообщению данную библиотечку после скачивания поменять расширение с txt на js
Я ламер, не подскажете, как именно подключить библиотеку, куда втавить?
*

kostyan15art

  • Новичок
  • 8
  • 0 / 0
Re: AJAX корзина
« Ответ #18 : 15.03.2012, 20:11:25 »
при добавление таваров в корзину не показывает название продукта(((( как исправить
*

funtic

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: AJAX корзина
« Ответ #19 : 19.04.2012, 10:02:04 »
Помогите прикрутить скрипт.
Скрипт показывает во всплывающей подсказке, сообщение.
Нужно чтобы товар добавлялся в корзину и всплывало окно с сообщением.
вот пример как я это вижу  http://detka72.ru/test-pop-up.html
« Последнее редактирование: 15.05.2012, 06:26:01 от funtic »
*

Muran4eg

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
  • www.drigin.com
Re: AJAX корзина
« Ответ #20 : 07.07.2012, 15:53:18 »
Когда нажимаешь на ссылку показать товар выезжает панель с товаром, и надпись ссылки меняется на скрыть товар, но нажимая на ссылку скрыть товар ничего не происходит.
Подскажите кто знает, как исправить эту ошибку http://d.pr/i/gHsD
*

ilya_daddy

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: AJAX корзина
« Ответ #21 : 13.07.2012, 00:51:07 »
Скажите, а кто-нибудь знает как ещё к этому замечательному модулю прикрутить меняющиеся изображения корзины? (корзина с товаром и корзина без товара )
*

nervf

  • Новичок
  • 3
  • 0 / 0
Re: AJAX корзина
« Ответ #22 : 18.07.2012, 16:41:52 »
Модуль классный )), а где подправить  чтобы сообщение выводилось по центру экрана?
*

freytas11

  • Захожу иногда
  • 83
  • 0 / 0
Re: AJAX корзина
« Ответ #23 : 18.07.2012, 16:55:28 »
Подскажите как можно скачать корзину? Делаю заказ ссылка не работает.
*

nervf

  • Новичок
  • 3
  • 0 / 0
Re: AJAX корзина
« Ответ #24 : 18.07.2012, 17:10:05 »
« Последнее редактирование: 18.07.2012, 22:28:37 от nervf »
*

vasya321

  • Осваиваюсь на форуме
  • 28
  • 3 / 0
Re: AJAX корзина
« Ответ #25 : 10.08.2012, 12:44:31 »
Модуль классный )), а где подправить  чтобы сообщение выводилось по центру экрана?

в /modules/mod_jshopping_cart/assets/style.css

в класс .lofloadding дописываем
Код
			display: table;
изменяем значение height: на 100%, position: на fixed

в класс .lofloadding .loadddingicon дописываем
Код
			display: table-cell; vertical-align: middle;

Такой метод не работает в старых версиях IE.

Скачал, установил, добавляет товар в корзину без названия и без характеристик.
После прочтения рекомендаций nevigen в этой теме, товар добавляет с описанием и характеристиками на русском.

А если у Вас большой список товаров, то имеет место удалить прокручивание вверх страницы при добавлении товара в корзину. Для этого в /modules/mod_jshopping_cart/mod_ice_jshopping_cart.php необходимо удалить в 2х местах
Код
			$('html, body').animate({
  scrollTop: $("#" + idDiv).offset().top
}, 500);
« Последнее редактирование: 03.11.2012, 02:18:40 от vasya321 »
*

MrJenika

  • Осваиваюсь на форуме
  • 49
  • 12 / 0
Re: AJAX корзина
« Ответ #26 : 01.10.2012, 23:36:11 »
Цитировать
Когда нажимаешь на ссылку показать товар выезжает панель с товаром, и надпись ссылки меняется на скрыть товар, но нажимая на ссылку скрыть товар ничего не происходит.
Подскажите кто знает, как исправить эту ошибку http://d.pr/i/gHsD

Думаю уже поздно, но чтобы менялось надо зайти в \modules\mod_ice_jshopping_cart\tmpl\default.php и заменить в строке 66 и 70 знак доллара на слово jQuery

Модуль отличный, спасибо.
*

ArtGPA

  • Осваиваюсь на форуме
  • 41
  • 1 / 0
  • ArtGPA
Re: AJAX корзина
« Ответ #27 : 18.10.2012, 15:47:21 »
У меня тоже в корзине пропали названия продукта + нет русского.
*

nevigen

  • Moderator
  • 10260
  • 855 / 25
  • http://n*****n.com
Re: AJAX корзина
« Ответ #28 : 18.10.2012, 16:01:54 »
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

seregin

  • Осваиваюсь на форуме
  • 39
  • 5 / 0
Re: AJAX корзина
« Ответ #29 : 19.11.2012, 19:27:45 »
Устанавливал код на Joomla 1.7 и JoomShopping 3.2.5. Пока не хочет работать, кто-нибудь пробовал?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Хороший поиск на ajax

Автор Simply

Ответов: 4
Просмотров: 123
Последний ответ 02.02.2021, 14:10:27
от nevigen
Re: Модуль AJAX корзины (Multi)

Автор Садко

Ответов: 90
Просмотров: 12240
Последний ответ 03.08.2020, 18:01:59
от goga_pgasovav
Корзина (шаблон vina veneno)

Автор pavel080

Ответов: 2
Просмотров: 288
Последний ответ 17.12.2019, 20:27:17
от kit2m2
Плагин: Задать вопрос о товаре для JoomShopping (ajax)

Автор stabilcomp

Ответов: 78
Просмотров: 13514
Последний ответ 23.11.2018, 18:14:26
от intcorp
AJAX поиск по товарам

Автор shikaka

Ответов: 13
Просмотров: 1359
Последний ответ 26.02.2017, 11:51:42
от nevigen