[модуль] Корзина на ajax

Тема в разделе "Shop-script", создана пользователем mariohs, 26 авг 2008.

  1. mariohs

    mariohs Постоялец

    Регистр.:
    1 май 2008
    Сообщения:
    115
    Симпатии:
    94
    После многочисленных проб и ошибок наконец-таки сделал данный модуль. Мой вариант основан на библиотеке sajax. Почему именно sajax - да потому что это наверное самая простая из ajax-библиотек, ее файл занимает всего 8 кб.

    На странице с товаром рядом с кнопкой "В корзину" сделал поле для ввода количества единиц товара, которые надо положить в корзину, и две стрелочки - вниз и вверх. При нажатии "вверх" происходит увеличение количества товара на единицу, при нажатии "вниз" - соответственно уменьшение, + прикрутил проверку на ввод неправильных символов и больших, чем кол-во товара на складе, чисел. См. скриншот.
    cart.jpg

    Изменения перечислены ниже. Полные версии измененных файлов в прилагаемом архиве. В тексте сообщения буду писать кратко, останавливаясь только на основных моментах.

    1. В корень сайта кидаем файл sajax.php
    2. В папку images кидаем файл mini2000.gif
    3. Изменяем index.php:
    После "settingDefineConstants();" вставляем
    Код:
    	require("sajax.php");
    	sajax_init();
    	sajax_export("add_to_cart");
    	sajax_handle_client_request();
    В самом конце перед ?> вставляем функцию add_to_cart()
    4. В languages/russian.php добавляем строку
    Код:
    define('ADMIN_UPDATING', '<img src=./images/mini2000.gif border=0>&nbsp;Обновление информации...');
    Далее изменяем файлы шаблонов: templates/frounedn/ваш_шаблон/

    5. В файле head.tpl.html в блок <script language="javascript"> добавляем функции show, add2cart, inc_cart, dec_cart, validateQuantity.
    И в конце файла перед </head> вставляем еще строчку
    Код:
    <script language="javascript">{php} sajax_show_javascript();{/php}</script>
    6. В index.tpl.html в тег <body> добавляем
    Код:
    onLoad="add2cart(0, '{$smarty.const.ADMIN_UPDATING}')"
    7. Изменяем файлы shopping_cart_info.tpl.html, product_detailed.tpl.html и product_brief.tpl.html. См. в архиве.
    Посмотреть вложение ajax_cart.rar
     
    vvdek, alexander-x, AHAHuM и 8 другим нравится это.
  2. Lawyer707

    Lawyer707

    Регистр.:
    23 сен 2006
    Сообщения:
    182
    Симпатии:
    93
    Только вместо
    6. В index.tpl.html в тег <body> добавляем
    Code:
    onLoad="add2cart(0, '{$smarty.const.ADMIN_UPDATING}')"
    Лучше добавить
    <body onLoad="add2cart(0, '{$smarty.const.ADMIN_UPDATING}')";>
    А то в шапке сайта тарабарщина вылазит :)
     
  3. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Lawyer707, так ведь и написано, что добавлять надо в тэг body ;)
     
  4. Lawyer707

    Lawyer707

    Регистр.:
    23 сен 2006
    Сообщения:
    182
    Симпатии:
    93
    PHP_Master, я подумал, что так понятнее.
    Если вставить просто между тегами body в произвольном месте, у меня не работает.
     
  5. Lawyer707

    Lawyer707

    Регистр.:
    23 сен 2006
    Сообщения:
    182
    Симпатии:
    93
    На локале все нормально, на сервере при отображении информации в корзине показывает:
    1 �����(��:(
    449.94 ���
    Как бы поправить кодировку?
     
  6. mariohs

    mariohs Постоялец

    Регистр.:
    1 май 2008
    Сообщения:
    115
    Симпатии:
    94
    В файле index.php в функции add_to_cart замени
    Код:
    return $str;
    на
    Код:
    $str = iconv("cp1251", "utf-8", $str);
    return $str;
    Еще встречал решение через unescape:
    phpclub.ru/detail/download/2005/nov-dec/phpi16_2005.pdf
    Но я его не пробовал, т.к. мне помог первый вариант.
     
    Lawyer707 нравится это.
  7. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    iconv в данном случае с ����� скорее не поможет.
    Здесь как раз надо колдовать с unescape и подобными.
     
  8. Lawyer707

    Lawyer707

    Регистр.:
    23 сен 2006
    Сообщения:
    182
    Симпатии:
    93
    Супер! Все заработало через iconv :) Еще бы не учитывать количество товара на складе и убрать возможность указывать количество товаров стрелками, оставив просто корзину (по умолчанию добавлять 1 товар за 1 щелчок), я был бы счастлив :)
     
  9. Dmytro_ua

    Dmytro_ua

    Регистр.:
    15 фев 2008
    Сообщения:
    239
    Симпатии:
    21
    У меня стоит правильное окончание товар(ов) и этот модуль не совсем корректно работает. Отображение в корзине постоянно меняется (напр. у меня валюта только грн., а тут иногда выскакивают рубли вместе с грн, при этом еще переводит по непонятному курсу).
    Помогите поправить. Самому еще тяжеловато...
     
  10. abasov

    abasov Постоялец

    Регистр.:
    5 апр 2006
    Сообщения:
    74
    Симпатии:
    6
    mariohs Есть возможность только измененный инклайд выложить? что бы не сравнивать, ведь много самописного...
    спасибо