Интернет-магазин 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
  • При изменении любых настроек sh404SEF, которые приводят к очистке кэша ссылок, перестают работать обычные пункты меню Joomla (выдают 404 ошибку). Чтобы восстановить их работоспособность, нужно зайти в настройку любого пункта меню и повторить его привязку к компоненту Joomla (т.е., например, для пункта меню, привязанного к стандартному материалу, нужно повторно выбрать этот материал). Глубже копать не стали, поэтому почему так происходит, неизвестно.
  • Мы столкнулись со стандартным багом совместной работы VirtueMart и sh404SEF: иногда, на некоторых браузерах, в информационном поле магазина вылезает надпись: "Ваш браузер не принимает cookies. Если Вы хотите положить товары в Вашу тележку и купить их, то Вам необходимо включить cookies.", при том, что на самом деле куки включены и все работает правильно. Мы не стали заморачиваться с обработкой этого бага, и учитывая, что посетителей нашего сайта с выключенными cookies будет совсем немного, поменяли эту строчку на "Добро пожаловать в наш магазин!". Это можно сделать в файле /administrator/components/com_virtuemart/languages/common/russian.php

Комментариев: 4

  1. 2009-10-13 в 21:30:23 | Макс (анонимно)

    Можно это расшифровать для полного чайника?

    Для отработки вариантов доставки, которые отображаются на соответствующем шаге оформления заказа, в функции list_rates() класса модуля нужно сделать следующее:

    Сформировать url-encoded shipping_rate_id, который содержит краткое описание способа доставки и его стоимость

    Сформировать HTML-строку для выбора этого способа (в стандартном случае radio button и label к нему)

    Поместить shipping_rate_id в массив $_SESSION

    А то в админке модуль появился, а чтоб его выводило что делать (понятным языком)?

  2. 2010-07-02 в 19:00:58 | Критик (анонимно)

    А почему ваш магазин так и не заработал ?

  3. 2010-08-11 в 16:18:41 | Анастасия (анонимно)

    Не знаю, как там на хостинге, а на локалке работает идеально! То, что надо. Минимум редактирования, и модуль отображает:

    1. Бесплатную доставку в случае покупки на сумму более 3000 руб. по городу и в пригород;

    2. Стоимость доставки в случае покупки на сумму менее 3000 по городу и стоимость доставки в пригород.

    Авторам спасибо большое!

  4. 2010-08-11 в 16:29:52 | casper

    Критик, наш магазин проработал совсем недолго, когда его пришлось закрыть - не по техническим причинам, а по организационным.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



(обязательно)