Первый серьёзный магазин на MS2

Давно чешутся руки написать про магазин, который стал причиной создания miniShop2.
Именно при разработке этого сайта на MS1 мы поняли, что он совершенно не тянет. Ну, то есть как? Конечно, задача была выполнена, функционал работал, даже более-менее сносно, но Simple Dream были недовольны результатом.
В первую очередь, не устраивала скорость, во вторую - удобство управления товарами. Получилось много велосипедов, кривенько сделанных настроек и этим было сложно пользоваться. А магазин большой, работать будет долго, труда и времени вложено ого-го!
Поэтому дружно решили разработать принципиально новый компонент, в котором будет удобно не только программистам, но и заказчикам. Ибо жить с готовым сайтом - им.
Ну вот, теперь можно показать, что получилось в итоге - Интернет магазин для счастливых семей. Сайт, который мы сделали дважды: на miniShop1 и miniShop2.
Он сейчас активно наполняется, каталог перелопачивается, вносятся размеры и проводится СЕО оптимизация. Но я думаю, что похвастаться уже можно.

Фильтры везде

Мало кто в курсе, что фильтры для поиска mSearch тоже были созданы для этого магазина. Отсюда их некоторая сложность в эксплуатации, ибо требования выдвигались серьёзные:
  • Поиск и вывод товаров где угодно

  • Фильтрация результатов по любым параметрам

  • Параметры строятся динамически, в зависимости от найденного

То есть, нельзя заранее сформировать и закэшировать фильтры - они должны строиться каждый раз заново, в зависимости от найденных товаров.
Отдельно хочу отметить, что все товары магазина выводятся через эту систему. То есть, фильтры и в поиске, и в категориях, и в акциях и вообще везде.

Параметры и учет наличия

У товаров магазина есть очень много связей и зависимостей.
  • Куча возможных размеров

  • Варианты цвета

  • Компллекты

С размерами пришлось повозиться особо. Во-первых: их просто много, во-вторых: они меняются от типа товара и в третьих: они могут влиять на цену.
Кроме того, учитываются остатки, да еще и с резервированием.

Особая корзина

Класс корзины используется собственный, ибо у него особые правила:
  • Каждый товар в корзине - отдельная позиция

  • Товар можно копировать, прямо в корзине, при этом проверяются его остатки и резерв

  • Можно менять цвет товара, опять же с проверками

  • Товар не удаляется из корзины сразу, покупатель может "передумать"

Создание заказа и оплата

Тут тоже свой класс, основное отличие - правила валидации полей и скрытие\показ нужного в зависимости от способа доставки.
Методы оплаты не вызываются сразу после заказа. Нет, ссылка на оплату приходит только при выставлении заказу "проверен" - тогда покупатель может кликнуть и перейти на оплату заказа выбранным способом.
Понятное дело, что функциональность этих систем расширена, как это предусмотрено архитектурой MS2.

Бренды

Для таких больших и серьезных магазинов отдельной характеристикой являются бренды, которые он представляет. Эту страницу переделывали много раз и дело не только в том, что нужно прочесать и отсортировать весь каталог, но и в том, чтобы это понятно показать.
На мой взгляд - получилось неплохо. Есть еще некоторые ошибки при переходе на товары из этого индекса, но я постараюсь их исправить в ближайшие дни.

Дизайн и юзабилити

Тут моей заслуги нет никакой - удобство покупателя и внешний вид целиком работа специалистов Simple Dream. Проверялась каждая табличка, каждая картинка, каждая кнопочка.
Учитывая, что проект в разработке уже долгое время, многое неоднократно менялось и перекраивалось (да и сейчас еще вносятся правки). Похоже, этот процесс невозможно закончить, можно только остановиться.
В любом случае http://mamaboutique.ru выглядит на 5 баллов! Кто не согласен - прошу в комментарии.

Заключение

Вся эта красота сделана на основе miniShop2 и других стандартных компонентов. Нет никаких хаков ядра, исправления парсера, шаблонизаторов или прочей новомодной фигни. В любой момент мы можем накатить обновления движку или магазину - и ничего не сломается.
Это стандартный MODX, к которому приложили руку хорошие специалисты. Работает быстро, на мой взгляд, быстрее многих магазинов подобной сложности. Никаких перезагрузок страниц без необходимости - везде ajax.
Лично я горд тем, что принял участие в программировании этого проекта, и мне не стыдно поставить его себе в заслугу. Еще раз повторяю, моей работы там процентов на 50, остальное - это программисты, дизайнеры и менеджеры Simple Dream.
Отдельно хочу упомянуть заказчицу магазина - более терпеливого и любознательного человека, которого не пугают наши постоянные заморочки, я не видел. Другой бы давно психанул и потребовал "хочу чтобы все было офигенно, вот прям щас и сразу!" - но нет, она вникает в наши сложности, и мы вместе решаем, как из них выйти.
Ведь, программирование - это творческий процесс, который отнимает много сил и нервов, тем более, когда изобретаешь что-то новое, а не идёшь проторенной дорожкой.
На мой взгляд, круче магазина на базе MODX в РФ нет. А на компоненте miniShop2 - тем более!

Updated 25.04.2013

Гораздо более красивое описание проделанной работы от Simple Dream.

43 комментария

Виталик Дощенко
Вася, спасибо. Действительно серьезная работа!
Виталий Князь
Каков бюджет такого проекта?
Виталик Дощенко
Скажем так, разработка такого сайта находится в нише «от 300 000 рублей». Если есть интерес — пишите на info@simpledream.ru.
Алексей
хорошая цена. какова конверсия такого магазина?
Виталик Дощенко
Магазин только запустился — сейчас сложно что-то сказать, увы.
Николай
Это просто невероятно! Вы под ноль уделали Simpla который как мне кажется был лучшим скриптом из за своих динамических фильтров и прочего... С нетерпением жду Ваш магазин, в котором будет mFilter и прочие сладости...
Wassi Wassinen
Фильтры и их скорость - потрясают. Жду магазин. :) Василий, скажи к чему готовиться: каков примерный порядок цен для подписчиков? :)
Василий Наумкин
Вопрос сложный, пока еще не ясно, во что встанет разработка этого магазина и написание\поддержка расширений.
Лично я (лично я), думаю, что mSearch2 с фильтрами будет стоить до 3 000 рублей за первую покупку, на первый сайт, а за остальные сайты - солидные скидки.
Но это вилами на воде, как будет более понятно - напишу. И про принцип работы этого магазина тоже будет отдельная статья.
Wassi Wassinen
Может быть уже можно что-то приобрести? )) С небольшими пояснениями?)) Фильтры спать не дают. :)))
Василий Наумкин
Нет, они еще не готовы для продажи.
А чтобы приготовить - нужно доделать текущую работу, то есть - магазин.
Классный магазин. Блин нужно будет хоть раз использовать твой miniShop. Тока глаза логотип мозолит, сделайте его с поддержкой ретины, то это уже стандартом становится, что нужно не меняющиеся картинки для ретины сохранять
Василий Наумкин
Логотип показывается только там, где нет картинок товаров. То есть, это просто замена для "нет картинки".
Подумаю, конечно, но на MacBook Pro Retina 15 - мне не мозолит глаза, может привык просто.
Потому что разрешение включено 1920 (: если включить лучшее для ретины то видно. У меня же тоже такой. А заметно сильно на iPad.
Офтоп. Как тебе ретина бук? Я купил как тока он появился и все немогу нарадоваться тому какой он крутой.
Василий Наумкин
Ну, у меня максимально мелко включено, да. Иначе невозможно работать.
Привык, нравится, может позже отпишусь о впечатлениях.
Как картинку на ретиновскую подменять не знаю, ибо дефолтная выставляется на php (просто адрес, без css) и там размер экрана не определить. Так что, пока будет как есть.
есть js библиотека, которая путь меняет картинку если ретина экран. У нас это просто стандартом в тех процессе стало, адаптивная верстка и подготовка к экранам с высоким ppi. То по статистике большой процент посещений с разных устройств с долбанутыми экранами.
О круто ты себе лого проапгрейдил (: то смотрю что то не так на сайте стало
Василий Наумкин
Всё руки не доходили, ты меня заставил, фактически!
Хаха, какой я злой (:
Маленькая истерика: АААААААА!!!! Как так быстро?! Это невозможно просто! Кешируется вообще всё что только можно (фильтры, результаты, вывод)? Какие параметры сервера?
Василий Наумкин
Почти ничего не кэшируется. Как вообще закэшировать поисковые запросы?
Сервер выделенный, на Hezner, баксов $80, кажется.
Все сниппеты работают на pdoTools - вот и секрет.
Александр Князев
Ну вот забашлял я за супер подписку, а про pdoTools так ничего и не нашёл. Может я плохо искал? А то в коде самого pdoTools по сути ничего нет. Где магия то? В выделенном сервере за 80 баксей?
Василий Наумкин
Конечно, ничего нет. Просто удобный инструмент для написания быстрых сниппетов со специальным рендером чанков.
На всякий случай - мой сайт не на Hezner, работает не медленнее, правда?
Александр Князев
Спасибо что ткнул носом.
Василий Наумкин
Я не знаю, как ты искал - http://bezumkin.ru/search.html?parents=0&query=pdotools - 4я ссылка.
Может, не обращаешь внимание на фильтр по разделу?
Виталик Дощенко
Такой сервер стоит 49$
Виталий Князь
Почему disqus, а не Tickets?)
Василий Наумкин
Когда создавали магазин, Tickets и в проекте не было.
Возможно, позже переделаем, но пока так.
Виталий Князь
Сайт зачетный. Каков бюджет такого проекта?
Василий Наумкин
Понятия не имею.
Это надо у Simple Dream спрашивать - спроси у первого комментатора.
Виталик Дощенко
Кому интересно — вот кейс Mamaboutique, на нашем новом неопубликованном сайте
Виталий Князь
Дизайн сайта получился постым и удобным.
Мне, как человеку интересующимся полным циклом создания сайтов, интересно покликать и посмотреть на все что было проделано: Дизайн основных страниц сайта (миниатюры по бокам есть, но при клике ни чего не происходит), Динамические прототипы.
Возможно конечно когда вы опубликуете свой новый сайт это будет ...
Виталик Дощенко
Спасибо. Учтем ваши пожелания при релизе
Галич Сергей
отличный магазин! скажи а фильтр этот, это компонент? он есть у тебя на сайте?
Василий Наумкин
Это mSearch, немного модифицированный для поддержки MS2.
Модификация не будет доступна, и вообще - это временное решение. Позже выйдет mSearch2, который я планирую продавать.
Николай
Добрый день, Спасибо, что решили выпускать модуль на платной основе, по мне это вообще единственный путь существования модх, жаль, что сообщество не согласно с этим. По мне, такой путь заметно ускорит и удешивит разработку всем последователям. Отдельное спасибо вашей заказчице - первому всегда сложнее.
Сейчас перехожу на Рево, как раз из-за отсутствия нужных компонентов/модулей в Эво.
Подскажите, пожалуйста: 1) Как реализована загрузка товаров? Есть отдельный компонент или все вручную? Стоит ли ждать загрузчика к minishop? 2) Правильно понимаю, что фильтры сквозные (для всех категори одинаковые параметры/подписи к фильтрам -категория, размер, цена, и т.д)? Т.е. подпись берется из TV caption, а значения из TV value (с поправкой на свою таблицу MS) и пока нет возможности сделать разные подписи к фильтру для разных категорий (т.е. где-то вес, где-то цвет, где-то наполнитель) используя одни и те же поля у документов?
Наверное непонятно написал - можно на Мвидео посмотреть. Там для ноутбуов одни параметры (класс ноутбука), а для стиральных машин уже другие (тип загрузки).
Иван Брежнев
Ошибка на странице http://mamaboutique.ru/store/discount/action.html
и глюк на http://mamaboutique.ru/catalog/puteshestvuem-s-detmi/?ms|price=1100,6900&tv|material=100%%20%D0%BF%D0%BE%D0%BB%D0%B8%D1%8D%D1%81%D1%82%D0%B5%D1%80 - страницу если обновить - картинки пропадают. наверно из за процентов в материале... так случайно заметил)
Василий Наумкин
А у меня всё ок, видимо от браузера зависит.
Василий Наумкин
Спасибо, поправил!
нет, все также... если выбрать материал-100% полиэстер и обновить страницу - то фотки пропадают и фильтр перестает работать
Александр Котлов
Там для выбора размера ничего нет, но в корзину добавлять не хочет с формулировкой - "выберите размер", что в хроме что в опере.
Василий Наумкин
Спасибо, поправил.
bezumkin.ru
Личный сайт Василия Наумкина
Прямой эфир
Василий Наумкин
22.11.2024, 03:33:54
Спасибо!
inna
06.11.2024, 15:47:13
Да. Все работает. Спасибо.
Василий Наумкин
01.07.2024, 11:56:41
Да, верно, именно так. А в контроллере, скорее всего, ловить данные методом post.
Василий Наумкин
26.06.2024, 09:38:15
О, точно, вылезает если не залогинен. Спасибо, исправил!
Василий Наумкин
09.04.2024, 04:45:01
> Ошибка 500 Это не похоже на ошибку Nginx, это скорее всего ошибка PHP - надо смотреть его логи. ...
Василий Наумкин
20.03.2024, 21:21:52
Volledig!
Андрей
14.03.2024, 13:47:10
Василий! Как всегда очень круто! Моё почтение!
russel gal
09.03.2024, 20:17:18
> А этот стоило написать хотя бы затем, чтобы получить комментарий от юзера, который ничего не писал...
Александр Наумов
27.01.2024, 03:06:18
Василий, спасибо! Извини, тупанул.
Василий Наумкин
22.01.2024, 07:43:20
Давай-давай!