Интернет-магазин VirtueMart - опыт использования
Метки: Joomla | VirtueMart
Вторник, 14 октября 2008 г.
Просмотров: 25828
Подписаться на комментарии по RSS
Вчера наша студия запустила новый проект - интернет-магазин подарков и праздников "Дарим Радость". В разработке мы применили связку CMS Joomla 1.5 и бесплатного интернет-магазина VirtueMart 1.1.2.
По итогам настройки и доработки VirtueMart могу рассказать о некоторых подводных камнях и путях их обхода:
1. Свой модуль доставки для VirtueMart
Мы сразу же столкнулись с тем, что нас не устраивают стандартные модули доставки, входящие в дистрибутив. Как оказалось, сделать свой собственный модуль доставки достаточно просто. Задача стояла такая: нужно, чтобы пользователь при оформлении заказа выбирал из двух способов доставки: обычная доставка (2-3 дня) и срочная доставка (24 часа). При этом стоимость доставки зависит от суммы заказа, т.е. получаются такие варианты:
- Сумма заказа до 1500 рублей, доставка не срочная - стоимость 300 руб.
- Сумма заказа до 1500 рублей, доставка срочная - стоимость 600 руб.
- Сумма заказа от 1500 рублей, доставка не срочная - бесплатно
- Сумма заказа от 1500 рублей, доставка срочная - стоимость 300 руб.
Для того, чтобы это реализовать, создаем в /administrator/components/com_virtuemart/classes/shipping свой файл модуля, в нашем случае darimradost.php, и файл с описанием модуля darimradost.ini. Полные исходные тексты вы можете скачать здесь.
Для отработки вариантов доставки, которые отображаются на соответствующем шаге оформления заказа, в функции list_rates() класса модуля нужно сделать следующее:
- Сформировать url-encoded shipping_rate_id, который содержит краткое описание способа доставки и его стоимость
- Сформировать HTML-строку для выбора этого способа (в стандартном случае radio button и label к нему)
- Поместить shipping_rate_id в массив $_SESSION
Этого достаточно для корректного отображения выбора способа доставки и его последующей обработки.
Правда, после загрузки модуля на сервер возникла проблема. Оказалось, что в PHP 5.1.6, установленном на сервере, запись в сессию длинных shopping_rate_id в виде индекса массива на русском языке не всегда отрабатывает, хотя при разработке, на PHP 5.2 все работало правильно. Пришлось поменять строчки для shopping_rate_id на короткие аббревиатуры типа "SU1500".
2. Установка sh404SEF - модуля ЧПУ для Joomla
Современные версии sh404SEF уже имеют встроенную поддержку VirtueMart, поэтому особых проблем с его настройкой не возникло. Есть только несколько замечаний:
- По умолчанию sh404SEF отображает ЧПУ без использования mod_rewrite и файла .htaccess, поэтому ссылки формируются с вставкой в URL index.php, например: /index.php/shop-terms.html. Чтобы сделать ссылки обычными (т.е. такого вида: /shop-terms.html), нужно в расширенных настройках shSEF404 в "Параметрах компонента" установить параметр "Режим Перезаписи (Rewriting)" в "исп. .htaccess (mod_rewrite)".
- Для того, чтобы компонент изменял русские буквы в адресах страниц на транслит, необходимо добавить соответствия этих букв в поле "Список заменяемых символов" в "Основной конфигурации". Просто добавьте в поле следующий текст (можете заменить отдельные элементы на свой вкус, если вам не понравится наш вариант транслитерации):
А|A, Б|B, В|V, Г|G, Д|D, Е|E, Ё|Yo, Ж|Zh, З|Z, И|I, Й|Iy, К|K, Л|L, М|M, Н|N, О|O, П|P, Р|R, С|S, Т|T, У|U, Ф|F, Х|H, Ц|C, Ч|Ch, Ш|Sh, Щ|Sch, Ы|Y, Э|E, Ю|Yu, Я|Ya, а|a, б|b, в|v, г|g, д|d, е|e, ё|yo, ж|zh, з|z, и|i, й|iy, к|k, л|l, м|m, н|n, о|o, п|p, р|r, с|s, т|t, у|u, ф|f, х|h, ц|c, ч|ch, ш|sh, щ|sch, ы|y, э|e, ю|yu, я|ya
Комментариев: 4
Можно это расшифровать для полного чайника?
Для отработки вариантов доставки, которые отображаются на соответствующем шаге оформления заказа, в функции list_rates() класса модуля нужно сделать следующее:
Сформировать url-encoded shipping_rate_id, который содержит краткое описание способа доставки и его стоимость
Сформировать HTML-строку для выбора этого способа (в стандартном случае radio button и label к нему)
Поместить shipping_rate_id в массив $_SESSION
А то в админке модуль появился, а чтоб его выводило что делать (понятным языком)?
А почему ваш магазин так и не заработал ?
Не знаю, как там на хостинге, а на локалке работает идеально! То, что надо. Минимум редактирования, и модуль отображает:
1. Бесплатную доставку в случае покупки на сумму более 3000 руб. по городу и в пригород;
2. Стоимость доставки в случае покупки на сумму менее 3000 по городу и стоимость доставки в пригород.
Авторам спасибо большое!
Критик, наш магазин проработал совсем недолго, когда его пришлось закрыть - не по техническим причинам, а по организационным.