StonnieAnnie 26 января 2015 0 18






Команда MODX-клуба успешно интегрировала ShopModxBox в интернет-магазин rightstarter.ru

Механизм работы

В качестве модуля интернет-магазина использовался shopkeeper. Ранее другие специалисты уже пробовали доработать shopkeeper, чтобы реализовать пожелания клиента, но желаемого результата достигнуто не было. Для изменения механизма работы магазина модуль shopkeeper был заменен на shopModx. После смены движка магазина доработать желаемый функционал уже не составило труда.

Группы пользователей: скидки и отображение количества доступного товара

На сайте существуют несколько групп пользователей. У каждой группы своя видимость содержимого сайта (вкладки, предложения, прайсы и т.п.).

Вид страницы для неавторизованного пользователя:



Вид страницы для авторизованного пользователя:



Добавление товара в корзину: проверка количества

Для новой версии корзины было введено условие по добавлению товаров. В корзину нельзя добавить товаров больше, чем есть в наличии. При срабатывании условия выводится сообщение о количестве товаров в наличии и перерасходе в заказе:



Оформление заказа

При оформлении заказа товар проверяется на его наличие. По каждому недостающему по количеству товару будет выведено сообщение и строки с товаром будут подсвечены.



Перерасчет остатков

При успешно оформленном заказе остатки товара в базе пересчитываются.
18 комментариев
vanchelo1
vanchelo 26 января 2015г в 16:12 #
StonnieAnnie1
StonnieAnnie 26 января 2015г в 16:21 #
Вы зашли во вкладку «Магазин», а каталог — вот он: joxi.ru/KAxgqR8iwJbw28
vanchelo1
vanchelo 26 января 2015г в 16:31 #
Понял. Было бы неплохо ссылку на магазин в топике оставить ;)
StonnieAnnie1
StonnieAnnie 26 января 2015г в 16:33 #
Исправили :)
vanchelo1
vanchelo 26 января 2015г в 16:40 #
Кстати с тайтла главной страницы лучше убирать слово «Главная» так как она не имеет отношение к контенту магазину.
Fi1osof1
Fi1osof 26 января 2015г в 16:50 #
Повторюсь, у них там своя политика, свои специалисты и мы особо не лезем туда. Все эти рекомендации мы дали, но это уже им самим решать что и как делать. Странно все это, но не моего ума дело :)
vanchelo1
vanchelo 26 января 2015г в 16:56 #
Т.е. вы занимались чисто движком?
Fi1osof1
Fi1osof 26 января 2015г в 17:15 #
Да, причем к уже готовому магазину. У них раньше какие-то специалисты то одно делали, то другое, при чем так, что иногда даже у одних пользователей появлялись корзины других пользователей, а некоторые блоки кода были просто вырвиглазные. К примеру, как тебе вот такой чанк, отвечающий за вывод цены в зависимости от группы пользователя (а чаще всего от его id-ишника)? joxi.ru/EA4NeMZf07M3mb
Мало того, что производительность отдыхает, так еще и скидка во фронт выводится, но это совсем не на уровне получения цен товаров для конкретного пользователя. Итог такой: во фронте юзер видит одно, а на почту приходит другое (без скидки) и манагеры в управлении заказами видят без скидки и высчитывают сидят все вручную (ну, это так было). Сейчас скидки учитываются еще на этапе выборки данных товаров, так что где бы не был вызван процессор получения данных товаров — цены всегда будут с учетом персональных скидок текущего пользователя. И на посту приходят письма уже с учетом скидок, и в управлении заказами менеджер видит стоимость с учетом скидки и размер скидки joxi.ru/YmEVeE0uLQ3426
Fi1osof1
Fi1osof 26 января 2015г в 16:34 #
Вань, это политика магазина, обсуждать ее не имеем права. В общем, там все только по поиску. Но может политика скорректируется. А так там на сейчас 39 808 товаров, 40 165 документов и 446 025 записей TV-параметров (уменьшилось после чистки).
vanchelo1
vanchelo 26 января 2015г в 16:37 #
Решили обойтись базовым функционалом MODX для хранения свойств сущностей?
a
ambo 26 января 2015г в 16:23 #
Ура!!! долгожданная реализация!
Fi1osof1
Fi1osof 26 января 2015г в 16:37 #
Если вы про остатки, то мы думаем на счет того, чтобы запилить их в сборку. Погоняем, потестируем, переосмыслим и запилим.
guru881
guru88 28 января 2015г в 20:35 #
На счет остатков, мне пришлось в самую первую очередь решить эту проблему, так как мой интернет магазин работал со складом и заказывать того, чего нет на складе нельзя. Видимо у вас первый заказчик с таким требованием. Но склад должен быть обязателен для магазина. Скорее всего логика мало чем отличается от моей. Да и сейчас для меня решить такую задачу раз плюнуть на шопмодксе) а когда то только изучал его))) Так что обязательно закиньте его в сборку)

У меня вопрос по поводу сущностей товара, я так понимаю все дополнительное описание вы заносили в ТВ параметры? Я лично отказался от этого, расширив класс ShopmodxProduct.
Fi1osof1
Fi1osof 28 января 2015г в 21:33 #
Видимо у вас первый заказчик с таким требованием.
Нет, не первый. Вообще у нас много чего делалось и делается, чего не видно. Просто некому было кейсы хоть как-то оформлять :) Сейчас вот у нас этим Настя будет заниматься :) (на самом деле не только этим). Так что в дальнейшем будет больше success stories и примеров реализации. Очень многое остается неосвещенным, хотя очень даже этого заслуживает.

Так что обязательно закиньте его в сборку)
Там много тонкостей. Я еще буду думать. Особенно когда присутствует и товар с остатками, и безлимитный товар.

У меня вопрос по поводу сущностей товара, я так понимаю все дополнительное описание вы заносили в ТВ параметры? Я лично отказался от этого, расширив класс ShopmodxProduct.
На сайте уже было ТВ-поле под остатки, и импорт на сайте настроен на работу с этим полем. Мы не стали менять никакие имеющиеся ТВ-параметры, даже цену оставили в TV-поле, а не в sm_price. Так что в большинстве случаев да, используются ТВ-параметры. Но можно и расширять имеющуюся таблицу. На этот счет у меня отдельные задумки есть.
guru881
guru88 28 января 2015г в 21:44 #
Да много тонкостей, и их реализовать тоже нужно, надеюсь вскоре появится.

У меня вопрос по остаткам, есть класс продуктов и дополнительный класс назовем Import, в котором хранятся размеры товара с остатками. Возможно ли в одном запросе к базе данных выбрать и товар и размеры с остатками? То есть сделать некий многомерный массив.
array ('id' => 25, 'name' => 'Такой-то товар', 'param' => array( 'size' => 'xl', 'sklad' => 23) )

или перебором вытягивать дополнительные поля к каждому товару?
Fi1osof1
Fi1osof 28 января 2015г в 21:58 #
Можно, но готового решения не выкачу сейчас. Тут много тонкостей опять-таки, в том числе и с количеством результирующих строк.
stager1
stager 28 января 2015г в 22:25 #
Много комментов по данному магазину. Это хорошо.
Что касается магазина — мне Николай помог решить массу вопросов и по поводу корзины пользователей и вопрос с остатками на складе и еще многое другое. Некоторые «программисты» только могут говорить как и что нужно делать. Николай просто взял и помог.
Когда я магазин этот делал знаний было катастрофически мало. Но было желание. И очень жаль, что в тот момент не было такого классного инструмента, как ShopModx. Пришлось делать из того, что было.
Важно одно — сейчас магазин гораздо удобнее и правильнее работает.
Ну а то, что все только по поиску, это, как уже отмечалось выше, решение начальства. (У каждого своя паранойя).

А Николай огромное спасибо за отзывчивость и желание научить всех желающих эффективно и продуктивно работать
Fi1osof1
Fi1osof 28 января 2015г в 22:50 #
Александр, спасибо на добром слове! :)
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.