Обсуждаем miniShop 2.0

Отличная новость, друзья. Дедушки Морозы из Simple Dream согласны профинансировать разработку miniShop 2.0 и предлагают собрать приблизительный список изменений.

Напоминаю, что разработка первого miniShop была начата ровно год назад, когда я знал и умел гораздо меньше, чем сегодня. Отсюда в нём куча E_NOTICE, странные решения с таблицами, неправильные названия объектов и еще много всякого.

Несмотря на эти недостатки, компонент завоевал определённое количество поклонников, которые скачали его без малого 5000 раз.

Теперь настало время переписать его по всем правилам. Оставить и улучшить нужное, выкинуть лишнее. Сделать его быстрее и удобней.

Вот мои задачи:

  • Товары должны стать CRC, со связанными таблицами свойств, тегов, изображений и прочим.

  • Собственные менеджерские страницы товаров и категорий, как в Tickets.

  • Новые, более оптимальные таблицы.

  • Скрипт миграции с miniShop 1 в miniShop 2.

  • Переписать все процессоры на class-based.

  • Привести в порядок весь основной класс, добавить PhpDoc комментарии.

  • Исправить все E_NOTICE уведомления.

  • Добавить в комплект сниппеты оплаты, включая выделенный из класса Z-Payment.

  • Переделать текущую админку, чтобы оставить там только управление заказами и настройки оплаты\доставки.

  • Тесная интеграция с Tickets, чтобы можно было оставлять отзывы о товаре\заказе.

После выпуска 2.0, первая ветка будет заброшена. Все смогут легко и просто перейти на вторую. Возможно, зацепим и mSearch\mFilter.

А теперь предлагайте, чего бы хотелось лично вам.

← Предыдущая заметка
Превью-изображения с YouTube, Vimeo и ruTube
Следующая заметка →
День рождения bezumkin.ru
Комментарии (45)
ViktorminatorViktor Minator
18.12.2012 22:01

мне хотелось бы побыстрее

Добряков Алексей
18.12.2012 22:10

Мне единственное что не очень понравилось это геммор с ценной потому что у меня клиенты привыкли изменять из на самой странице товара (как написать что бы цена бралась из tv я вкурсе), так же и другие параметры прописывать там же в TV, а то не очень удобно одно там, другое там, лучше на мой взгляд было бы если все параметры товара были на самой странице товара, а не в самом miniShop, а в самом плагине проста просматривать что купили статус и т.д. ещё было бы прикольно просматривать в компаненьте сколько чего куплено (для статистики клиента) и так же выводить на страницу товара

Denys Butenko
18.12.2012 22:34

Сравнение товаров

Алексей Романов
19.12.2012 18:45

Так это делается просто. Тут версия miniShop не играет роли

0b6b055d564348cd53129157cВасилий Краковецкий
18.12.2012 22:55

Изображения убрать из отдельной таблицы. хранить в основной таблице в поле img в формате json.

Denys Butenko
18.12.2012 23:07

Я думаю, что лучше все свойства товара хватит в одном месте.

ViktorminatorViktor Minator
18.12.2012 23:18

понимаю, что именно так и будет:

«Товары должны стать CRC, со связанными таблицами свойств, тегов, изображений и прочим.»

0b6b055d564348cd53129157cВасилий Краковецкий
18.12.2012 23:20

Ну значит на всякий случай упомянуто будет, в принципе это первое что приходит в голову из рац. предложений. Второе что приходит в голову — система скидок и купонов.

Алексей Романов
19.12.2012 18:48

Тут тоже особых сложностей нет. Если кому интересно могу рассказать как это сделать

0b6b055d564348cd53129157cВасилий Краковецкий
19.12.2012 18:50

В том весь и смысл чтобы не делать каждый раз своё, а чтобы этот функционал был из коробки.

Алексей Романов
19.12.2012 18:56

Это всё лень матушка мозг напрячь лишний раз ((

За коробки нужно платить

0b6b055d564348cd53129157cВасилий Краковецкий
19.12.2012 18:58

Это не лень, это время, а время — деньги.

Алексей Романов
19.12.2012 19:07

Ну так проспонсируйте труд Василия и сэкономьте своё время! Или тоже не вариант? Он же своё время и на вас тратит и на разработку и на поддержку

Алексей Романов
19.12.2012 19:07

А вы только своё время и цените!

0b6b055d564348cd53129157cВасилий Краковецкий
19.12.2012 19:34

Если Вам так хочется перейти на личности — милости прошу написать мне куда-нибудь более приватно, а не разводить здесь непотребства отходя от темы. Почитайте содержание статьи собственно. Там идет обращение к комьюнити с просьбой нагенерировать идеи, а не о сборе средств. Со сбором от комьюнити уже был опыт у Василия. А те кто хочет поспособствовать — способствует. Я например материально не могу помочь, потому что сам являюсь разработчиком, но помогаю своими разработками делая коммиты на гитхабе. Так что не надо пытаться меня упрекнуть в чемто переведя разговор на деньги.

argnistВиталий Киреев
18.12.2012 23:08

Чтобы поддерживались не только мультикатегории, но и иерархия подкатегорий. Еще мелочь, но сейчас нельзя отсортировать по выбранным категориям. Поддержка всех типов tv инпутов, которые есть в modx… Пока навскидку все, что вспомнилось. Ну и переименование классов ModGoods в Product, ModCategories в Category и т.д. =)

Николай
19.12.2012 01:38

Нужна гибкая настройка характеристик товара и его подкатегорий (вынести создания структуры товара в область API)

Есть товары у которых к примеру есть дополнительные свойства цвет, упаковка итп

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

У вас есть пример с футболкой. Но есть 1 но по реальным складам такой товар идет по разным артикулам и разным количеством, цена разная, может зависеть от веса, или разный способ доставки, а сейчас это реализовано как 1 наименование к которому жестко привязаны параметры которые можно использовать можно не использовать либо перепиливать авторский скрипт, что ни есть хорошо.

Хотелось бы увидеть, что то типо 1 карточка товара с возможностью подключения кастомных параметров и апи для работы с ними (нечто подобное пытаюсь реализовать на базе migx).

Либо включить возможность подключать собственный обработчик остатков товара.

Все это счастье можно держать в Json массивах

… Получилось весьма сумбурно. но основная мысль такова, что нужно отдать как можно большую часть на откуп Api

В любом случае жду с интересом и любопытством))

gasergeГалич Сергей
19.12.2012 01:52

согласен

главное чтоб например тот же бейбел при мультиязычности спокойно работал, но вроде это как решает CRC?

OnFoxПеретягин Илья
19.12.2012 13:10

1. Недавно просмотренные товары.

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

2. Сравнение товаров (писалось выше, но все же повторю, важный момент)

В ряде тематик, реализация сравнения очень важна. Например сайт продает сотовые телефоны со средней ценой в 10 000 рублей, такая сумма заставляет человека более тщательно выбирать, а не брать сразу, что первое попадется как при покупке бутыля воды 19 литров. После чего ему надо открыть страницы с товарами которые подходят ему по каким либо критериям – цена, дизайн, и т.д., сравнивания таким образом товар, покупатель путается, в основном в таблицах характеристик и это если надо сравнить два, три товара, а если их больше, то человек может уйти. Сравнение выбранных им товаров, позволит наглядно увидеть отличия данных дивайсов на одной странице, не прибегая к дополнительным переходам по сайту, что опять же повышает монетизацию.

3. Сопутствующие товары.

Сайты по продаже дешевых изделий в основном зарабатывают на сопутствующих товарах. Например мы продает дешевый плеер, а к нему предлагаем еще чехол, батарейки, дополнительные типа качественные наушники, какие нить будь подставки и т.д., в конечном итоге, сам плеер не является прямым источником заработка. Но даже если сопутствующие товары не выполняют роль прямого заработка, они все равно остаются важным моментом, так как помогают покупателю более комплексно сделать заказ в одном месте, например мы покупаем кулер для воды и к нему берем стаканодержатель, который стоит на порядок дешевле, тем самым не обогащая бизнес, а создавая приятное впечатление, оставляя ниточку для возврата или «сарафанного радио».

4. Похожие товары.

Продолжаем улучшать монетизацию. Человек входит на какой то товар по прямой ссылке, в этот момент появляется желание купить изделие, но какой то момент его не устраивает, например дизайн товара, соответственно ему надо предложить, что то сильно похожее, но все же другое, тут и вступает в силу блок с похожими товарами, он не отпускает человека с сайта, предлагая товары которые так же могут ему понравиться.

Алексей Романов
19.12.2012 18:51

1. Недавно просмотренные товары.

У Василия есть готовый сниппет для этого, сам минишоп тут вообще ничего не решает

2. Сравнение товаров (писалось выше, но все же повторю, важный момент)

Написал выше, делается очень просто

3. Сопутствующие товары.

Так же реализуется просто в не зависимости от версии минишопа

4. Похожие товары.

Тоже все предельно просто

Конечно все хотят всего готового и я это понимаю, но тогда возьмите и поддержите Василия не только своими хотелками, а и материально, это как известно для программера лучшая поддержка

OnFoxПеретягин Илья
19.12.2012 19:14

Хотел с начала расписать все по пунктам, привести доводы, что создание сайта это не только написание кода и т.д., но подумав решил, что зря время потрачу, и возможно подниму не нужный этой теме спор, по этому отвечу только так:

Вопрос был – «А теперь предлагайте, чего бы хотелось лично вам.»

Я написал, а дальше пусть Василий решает, что надо, а что нет.

Алексей Романов
19.12.2012 19:21

Прошу прощения если обидел чем-то)

inetloverАлександр Наумов
19.12.2012 14:20

Спасибо Simple Dream и Василию за новогоднюю инициативу!!!

Мои пожелания.

1. Сделать Ajax проверку малого количества товаров. Например, когда в остатке товара мало (например 5 или 10) то включается Ajax проверка остатка. Это нужно для того, что бы покупатель не положил в корзину товара больше, чем есть на складе. А менеджеру потом не пришлось извинятся, объясняя, что столько единиц товара нет в наличии.

2. Интегрировать тикеты с возможностью ведения диалога между менеджером и покупателем без посторонних лиц (тет-а-тет).

Антон Слободчук
19.12.2012 16:45

1. Полноценная поддержка TV в админке.

2. Редактирование товара, вкладка «категории»: сначала отображать категории к которым относится товар, потом — все остальные. Сортировка по колонке «включено» также необходима.

3. Редактирование заказа: возможность добавление товара не только по названию, но и по артикулу.

4. Возможность создания заказа через админку.

5. Возможность вешать снииппеты на изменение статуса заказа (не только отправку email). Здесь же, при изменении статуса заказа, возможность не отправлять email и не выполнять соответствующий сниппет (необходимо в некоторых ситуациях).

6. Вынести свойство «производитель» для товара в отдельное поле — не через TV. В идеале, сначала где-то задавать список производителей, далее при создании/редактировании товара выбирать производителя из выпадающего списка.

7. Редактирование заказа, вкладка «адрес» — здесь очень не хватает возможности привязать точку на яндекс карте.

8. Печать заказа из админки, включая карту из п. 7

Антон Слободчук
19.12.2012 16:57

9. Когда включена опция проверки наличии товара на складе, проверять, что кладется в корзину. Сейчас пользователь может положить туда все что угодно при соответствующих знаниях. Например в ситуации, когда продается эксклюзивный товар, который достанется первым 10 успевшим, да еще и с возможностью оплаты электронными деньгами, это добавляет геморроя (особенно возврат денег с какой-нибудь Робокассы).

10. Для каждого товара возможность задания похожих / сопутствующих товаров (отдельная вкладка).

11. Что-то подобное тоже хотелось бы сразу «из коробки»: modx-shopkeeper.ru/documentation/modx-evolution/plagin-paramedit.html

Антон Слободчук
19.12.2012 17:05

12. Печать по заказу из админки: счет-фактуру, товарная накладная (торг-12), товарный чек.

13. Когда товара нет в наличии, возможность покупателю попасть в лист ожидания: на сайте на карточке товара он оставляет адрес электронной почты, имя и контактный телефон, далее в админке отдельная вкладка «Лист ожидания», где выводится список ожидающих этого товара. Далее можно отправить выбранным ожидающим информацию о том, что товар поступил.

Алексей Романов
19.12.2012 18:54

5. Возможность вешать снииппеты на изменение статуса заказа (не только отправку email). Здесь же, при изменении статуса заказа, возможность не отправлять email и не выполнять соответствующий сниппет (необходимо в некоторых ситуациях).

У минишопа есть куча событий особенно в версии 1.9.4, вешайте плугин с вызовом нужного сниппета на изменение статуса

msOnOrderChangeStatus срабатывает после изменения статуса заказа

msOnBeforeOrderChangeStatus срабатывает до изменения статуса заказа

bezumkinВасилий Наумкин
19.12.2012 20:19

Алексей, спасибо за поддержку.

Но я действительно просил написать хотелки, а мы потом отсортируем что делать, а что нет. Лично у меня нет собственного магазина — отсюда мне не ясно, что именно нужно людям сегодня.

На мой взгляд уже сейчас, на первом минишопе можно сделать практически, что угодно. Но вопросов меньше не становится, и в основном — они одни и те же. Так что проще их взять и решить во второй версии, чем давать одинаковые ответы еще год =)

Алексей Романов
19.12.2012 20:33

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

Вам нужно просто открыть свой репозиторий платных плюшек

black_mistДарья Гущина
20.12.2012 04:15

Из того, что приходилось дописывать для minishop по заказу клиентов:

1. Купоны и скидки с возможность ограничивать по периоду действия, количеству использования, задаваемые в валюте или процентах

2. Товары по акциям и спец. предложениям (дополнительный параметр новой цены)

3. Помечать товары как доступные только для предзаказа

4. Возможно, из разряда бреда, но некоторые заказчики просят скрывать все ненужные им поля в товарах и заказах, т.к. заполняют зачастую менеджеры, и «лишнее» их сбивает. Т.о., как вариант, в настройках можно было бы указывать список отображаемых полей товара/заказа.

5. Итоговые суммы в карточке заказа: без скидки, со скидкой, с доставкой и скидкой

Понятно, что некоторые пункты легко реализуются через tv, но из удобства «чтобы было все в одном месте», меняла сам компонент.

Евгений
21.12.2012 15:46

1) Поддержка мультиязычности (если не заполнен второй язык то всё равно выводить информацию из основного языка)

2) Нормальная фильтрация по характеристикам.

Володимир Литвиненко
21.12.2012 17:41

1. Очень не хватает возможности редактировать стоимость (а может, и другие поля) товара прямо в таблице товаров — как в настройках MODX.

2. В импорте просто необходимо добавить возможность выбирать символ — разделитель. Также не помешает возможность делать импорт из текстового поля, для отладки. В общем, всё как у ImportX.

Антон
22.12.2012 18:46

Был бы интересным шаг с определенными ценами для определенных категорий пользователей(оптовая закупка, розничная закупка), либо изменение цены при покупке определенного товара в определенном количестве (наример, если приобрести товар больше 5 или 10, то он будет доступен по оптовой цене).

Евгений
21.01.2013 13:36

Согласен, полезная функция, многие хотят такой функционал

Антон Слободчук
22.12.2012 19:43

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

Богдан
23.12.2012 04:54

Модуль экспорта товаров в csv. При импорте, возможность указывать подкатегорию товара.

Alexandr Semenov
25.12.2012 11:36

1. Обработка заказов в Tickets. При продаже интеллектуальных товаров или услуг, например серийных номеров и лицензий, это наиболее удобный способ.

2. Дополнительные поля в профиле пользователя после регистрации

3.Сохранение истории заказов пользователя (например история тикетов пользователя в Tickets)

habrahabr.ru/company/webasyst/blog/122688/ Здесь статья полутора летней давности, в ней и комментариях достаточно хорошо описана удобная система обработки заказов и работы с клиентами соответствующее процессам описанным в ITIL

Жуковский Антон
03.01.2013 18:10

Не могли бы вы добавить в minishop метод для очистки корзины? Я сделал сам, но не хочется каждый раз дописывать его при обновлении компонента.

bezumkinВасилий Наумкин
03.01.2013 18:32
unset($_SESSION['minishop']['goods']);

Куда это нужно добавить?

Жуковский Антон
03.01.2013 23:03

minishop.class.php:

/*
* Empty cart
*
* @returns array $arr 					// array with total weight, price, and number of goods
* */
function emptyCart() {
unset($_SESSION['minishop']['goods']]);
$data = $this->getCartStatus();
return $this->success('ms.Cart.empty',$data);
}

minishop.php:

// Load needed method
switch ($action) {
case 'emptyCart': $res = $modx->miniShop->emptyCart(); break;
...
}

minishop.js:

$('.emptyCart').live('click', function(e) {
$.post(url, {action: 'emptyCart'}, function(data) {
data = $.parseJSON(data);
showResponse(data);
cartStatus(data);
})
e.preventDefault()
})

Вот, как-то так :)

bezumkinВасилий Наумкин
04.01.2013 00:06

Ок.

HanamiНикулина Наталья
14.01.2013 14:31

спасибо :)

Сергей Карпук
28.01.2013 06:57

Сравнение товаров.

AlexVahАлексей Вахрамеев
30.01.2013 15:45

Как уже писали выше, хотелось бы указывать вариант цены в зависимости от количества товаров. Например, при заказе, от 1 до 100 товаров цена за 1 шт. 100 руб., при заказе больше 100 товаров - цена за 1 шт. 85 руб. и т.п, таким образом при оформлении заказа в корзине товаров итоговая сумма формируется за счет параметров первоначальной цены, зависимой от количества товаров.

Pashkevich Aleksandr
12.02.2013 08:29

В начале длинная предыстория,которую можно не читать.

Я не знаю может кто уже писал или нет. Но вот сегодня во время стечения обстоятельств, мне с одного кривого хостинга пришлось переносить на нормальный сайт с modx и минишопом, и вот как-то так получилось, что вот всё работает, а он нет, я уже и так и этак, в итоге добрался до исходников. Первым делом на echo вешаю запрос, и о чудо запрос отображается, думаю отлично, значит уже проблема не в подключение modx, и в итоге ещё дальше поковыряв, я нахожу вот какую особенность, оказывается что нет такой таблицы, но я её вижу у себя перед носом(перед этим 5 часов возился с кодировкой), и тут ещё несколько раз прочитав названия таблицы я понимаю, что дело в одной маленькой разнице, в одной буковке.

Поэтому прошу, сделайте имена таблиц не modx_ms_modTags, а modx_ms_modtags

Разница не слишком большая, и для тех кто не лазит в БД разницы вообще никакой, а те кто лазят, прочитают и так, но возможно избережёт от такой проблемы как описана у меня в предыстории.

futuris
Futuris
16.03.2023 17:04
Ок, вижу \core\vendor\vesp\core\src\Controllers Спасибо!
futuris
Futuris
14.03.2023 16:04
Была папка tmp, и удалял и переустанавливал ее - все без толку. Выше товарищ правильно написал, что ...
inetlover
Александр Наумов
22.02.2023 19:10
Спасибо! Да, мне здесь подучиться нужно.
bezumkin
Василий Наумкин
19.02.2023 19:49
Не такая уж тут активность в комментриях, чтобы что-то снижать - а удобнее будет, в первую очередь м...
inetlover
Александр Наумов
19.02.2023 15:12
Спасибо!
inetlover
Александр Наумов
06.02.2023 00:48
Ок, спасибо!
inetlover
Александр Наумов
28.01.2023 18:27
Классно, все работает!
inetlover
Александр Наумов
24.01.2023 18:31
Понял, спасибо!
inetlover
Александр Наумов
16.01.2023 16:41
Понял, спасибо!
bezumkin
Василий Наумкин
14.01.2023 05:16
Да, мне тоже нравится Vite и он по умолчанию используется в Vue 3 и Nuxt 3. Более того, он вроде как...