Как сделать зоомагазин
Jan. 9th, 2011 04:12 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Браза 2dostudio попросил сделать ему инет-версию оффлайновой сети зоомагазинов местных.
Получился zoo29.ru (клик на первую картинку – в магазин ):
Там всё суперудобно, можно сделать заказ без регистрации и вообще всё просто летает. Пока это бета – скажем, корзина не запоминается между сеансами, кое-где тексты неадеватные и картинки не очень. Поиска пока нет – но будет.
Заказывать уже можно, но осторожно. Да, Володя?
Ниже -- ещё скриншотеги и как делалось.
Вводные были примерно такие:
- Есть склад в 1С, его надо синхронизировать со онлайн-стоком, скажем, ежедневно
- Всё должно быть быстро, красиво и удобно
Сначала я подумал в сторону 1С-Битрикс, даже попробовал поковырять демо… Потом проанализировал базу. И вышло, что не перелопачивая структуру базы сделать на Битриксе ничего не получится.
И даже перелопатив базу, всё равно будет грустно, и вот почему.
Для одного, скажем, типа корма бывают упаковки разных весов. В битриксе без допиливания они будут показываться каждый отдельным товаром – хотя это один и тот же товар, с одинаковым названием, картинкой и описанием. Выбрать что-то в такой свалке будет трудно.
Есть ещё момент, это уже 1С-ное в чистом виде. Довольно трудно сделать так, чтобы товар одновременно принадлежал двум категориям – скажем, одна и та-же клетка подходит и для птиц, и для грызунов.
Короче, на Битрикс я плюнул, он кста ещё и чудовищно медленный.
Пришлось написать парсер, который разбивает 1С-ную базу на категории, группирует одинаковые товары с разной развесовкой и маркирует все товары тэгами (Кошки, Собаки, Котята, Корма, Здоровье, Гигиена и тп), ресэмплит картинки, а потом выгружает всё это на сервер. 37 килобайт яваскрипта.
В процессе парса 1C-ного XML (руки бы поотрывал за кириллические тэги) выяснилось, что после группировок и обезвоживания объём баз сокращается примерно в 60 раз. Это означает, что можно сразу, при открытии какого-то раздела сайта (Кошки там или собаки), загружать всю базу товаров для этого животного – несколько сотен наименований спокойно укладываются в 100 Кб. А уже загруженную базу фильтровать по тэгам.
Такой подход позволяет работать зоомагазину очень, очень, ОЧЕНЬ быстро. Совершенно кста неожиданный для меня результат – я полагал сначала делать всё по классической схеме.
Ну и ещё из интересного. При обкатке выснилось, что в описаниях товаров и заголовках есть длинные слова, которые рвут вёрстку. Так вот, я написал кусочек кода, который расставляет в длинных словах переносы. Длина кусочка кода – 7 строк ) Честно.
Плюс в зависимости от длины описания и заголовка карточки товаров верстаются немного по-разному.
Ругайте )
PS. Да, я знаю, что у меня очень узнаваемый стиль.
no subject
Date: 2011-01-09 01:46 am (UTC)можно категории животных отрисовать иконками-кавайками в стиле лого, и расставить сеткой, удобнее станет навигация и первым юзерам (а, насколько я понимаю, существенная часть ЦА это virgin юзеры) легче будет разбираться в категориях. если тебе лень это делать, могу скетч набросать). текнологически изменения потребуются минимальные.
no subject
Date: 2011-01-09 01:49 am (UTC)no subject
Date: 2011-01-09 01:54 am (UTC)не уловил твою идею, из скетча наверное и правда будет понятнее )
no subject
Date: 2011-01-09 09:36 am (UTC)на мышек и черепашек меня уже не хватило, пора бежать собираться в командировку)
конечно же, вектором, и читаемость кое-где подпатчить. но ты понял, я думаю.
no subject
Date: 2011-01-09 09:55 am (UTC)no subject
Date: 2011-01-15 04:42 am (UTC)no subject
Date: 2011-01-09 09:55 am (UTC)no subject
Date: 2011-01-09 02:44 am (UTC)бросилось в глаза:
- при эмуляции переходов по страницами яваскриптом неплохо бы писать это в хистори браузера (чтобы кнопка "назад" работала, например)
- в иетестере, особенно в режиме эмуляции ие6 как то все мягко говоря разъезжается
- комбинация контролов +-х (в корзине) не самая понятная
на битриксе кстати упомянутая проблема с разной весовкой товаров решается не сложнее выбранного вами пути, но свой парсер (и вообще все свое) — более спортивный вариант, с т.з. разработчика конечно =)
no subject
Date: 2011-01-09 02:59 am (UTC)А расскажите плиз парой предложений, как на битриксе решить проблему развесовки, если учесть, что названия товаров в базе включают массу, а в графе "масса" ничего не указано.
Базу переделывать нереально.
no subject
Date: 2011-01-09 03:36 am (UTC)Интересно, с учетом трансферинга товаров из каталога "удобного для учета" в "каталог удобный покупателям" выгрузку заказов (и их статусов) в 1С как планируете делать?
no subject
Date: 2011-01-09 09:59 am (UTC)no subject
Date: 2011-01-10 06:39 pm (UTC)no subject
Date: 2011-01-10 10:59 pm (UTC)no subject
Date: 2011-01-09 04:24 am (UTC)Ты наверное хотел сказать "группам".
Потому что у тебя товар в дереве. А надо использовать свойства и категории. Делается с помощью регистра сведений и ПВХ. Ну это если я ничего не забыл.
no subject
Date: 2011-01-09 10:04 am (UTC)у меня не получилось выгрузить кастомные характеристики, это раз. интерфейс внутри 1С для их задания предполагает огромное к-во лишних кликов, это два.
no subject
Date: 2011-01-10 01:55 am (UTC)ну ты когда-то должнен где-то написать, что этот товар зеленый (свойство), для кошек (категория), для собак (категория). Если надо, можно хорошо оптимизировать по количеству кликов. Но практика показывает, что народ предпочитает поводить мышкой, а не запоминать ключевые клавиши и порядок обхода.
no subject
Date: 2011-01-10 02:23 am (UTC)-- категории, заданные полями, не выгружаются в лоб
-- чтобы их выбирать из справочника, надо делать чудовищное количество кликов.
Вторая причина даже важнее, потому что описания вносились в базу отдельным человеком как правило копи-пэйстом, и куда проще наколотить пару слов перед Ctrl-V, чем дрочить UI 1С-ки и проклинать его проектировщиков.
Выгружается встроенной в 1С 8 выгружалкой о_О Она формирует два xml-файла и свалку сырых картинок.
Дальше эти два файла парсятся WSH-скриптом, группируются одинаковые товары выделением одинаковых подстрок в названиях, объединяются тэги и все сериализуется в json.
Потом imagemagic-ом приводятся в божий вид картинки (флэттенятся, ресайзятся, обрезаются цветовые профайлы и тп).
А потом всё это сливается на сервер через ftp. В самом деле, это для пользователя два клика.
Не понял про оптимизацию и ключевые клавиши.
no subject
Date: 2011-01-10 04:35 am (UTC)no subject
Date: 2011-01-10 06:47 pm (UTC)no subject
Date: 2011-01-10 08:17 pm (UTC)Ломаются именно в смысле что если пользоваться свойствами и категориями через стотыщ кликов, ты можешь не только их парсить, но и многое другое. Сэкономив на кликах и не написав заменяющий их код, ты лишаешь себя этой возможности. Если клиент не избалован, это конечно же прокатит.
no subject
Date: 2011-01-10 08:28 pm (UTC)Клиенту описание продукта никуда не упёрлось, а про маппинг базы на поле тэгов -- как концепцию управления большими стоками -- он вообще впервые от меня услышал. Понятие "категорийный менеджмент" ему тоже пока ни о чём не говорит -- у него не тот уровень конкуренции и высокая маржа, чтобы заморачиваться такими абстракциями.
Сокращение сроков и минимизация затрат ценой эфемерных будущих геморроев -- отличное решение в нашем случае. И у меня есть ощущение, что ты это прекрасно понимаешь -- раз уж ты бросил такого джокера как последний козырь )))
no subject
Date: 2011-01-10 10:33 pm (UTC)Ты все правильно сделал. Но так сказать нетрадиционно. РАботать будет, но с тобой а не со среднестатистическим одинэсником на поддержке. ПОдумай, что удобно не всегда хорошо. И что труд того кто смотрит отчеты в разы дороже чем труд того, кто вбивает первичку. Но судя по всему, для этого клиента только так и надо. Ты внедренец, тебе лучше знать. Методические разработки != внедрения :-).
Сделай юай чуть поуже, кажется, на 1024 не влезет. В остальном заебись.
no subject
Date: 2011-01-09 08:52 am (UTC)Надо бы вычитать базу.
no subject
Date: 2011-01-09 10:49 am (UTC)no subject
Date: 2011-01-09 11:00 am (UTC)да, я теперь вижу, что должно -- потому что трэкам видно, что ВСЕ пользователи айпада-айфона норовят тэпнуть по айтему в каталоге. стало быть, я сделаю симулякр -- всплывающее окно, в котором написано то-же самое, но картинка больше.
no subject
Date: 2011-01-09 11:11 am (UTC)а чем трекинг кликов на нессылки отслеживается?
no subject
Date: 2011-01-09 11:17 am (UTC)про клики -- уже ничем, а вообще был на body приаттачен event listener, который каждый клик отслеживает и отправляет id элемента, на котором был клик, на сервер.
это буквально в пять строчек на клиенте и в 10 на сервере делается, но нагружает сервер почём зря.
no subject
Date: 2011-01-09 11:57 am (UTC)no subject
Date: 2011-01-09 04:15 pm (UTC)no subject
Date: 2011-01-11 05:24 pm (UTC)no subject
Date: 2011-01-11 06:25 pm (UTC)no subject
Date: 2011-01-16 01:24 pm (UTC)