miniShop 1.8.0

Очередная версия моего интернет — магазина. Основные изменения:

События

Добавлены события для плагинов. Теперь можно писать плагины, реагирующие на создание\изменение\удаление заказа и изменение статуса. Теперь можно навшивать кастомные навороты на заказы.
Например, при изменении статуса заказа на Отменен, удалять какие то записи из БД.
Почитать подробнее.

плагин miniShop

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

Если будете его переделывать — не забудьте переименовать в miniShopExt, чтобы эти изменения не затерлись при обновлении.

Почистил процессоры

Процессоры переделаны для работы с $modx->runProcessor. Все $_POST и $_REQUEST заменены на кошерный $scriptProperties, и эти процессоры теперь можно вызывать через MODX Api.

Обновление корзины

Вернул старый метод обновления корзины в minishop.js, из-за миллиона вопросов «а почему в видео так, а у меня вот так?!». Старый метод закомментирован, кому надо — поменяйте его с новым.
Еще раз: старый нужно раскомментировать, а новый — закомментировать.

Итого

Из-за обилия подобных вопросов комментарии на http://modx-minishop.ru отключены. Не знаю, временно, или нет.
Если люди не читают комментарии, перед тем, как задать свой воспрос — нафига эти комментарии тогда нужны?

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

Дальше его такими темпами развивать не планирую. Только исправление критических ошибок и особо ценные улучшения. На импорт\экспорт, например, никто так и не разорился.

Скажу по секрету — бесплатная работа для общества приносит много головной боли и мало денег. Вот такой сюрприз.

Updated

На всякий случай проясню по поводу окончания активных разработок miniShop.

Как и MODX — это не готовый магазин для домохозяек. Это инструмент для создания магазинов. MODX создает сайты, хотя это можно делать на чистом PHP или даже HTML, а miniShop — создает магазины, на основе MODX.

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

На мой взгляд, сейчас, на основе MODX + miniShop можно создать практически любой небольшой магазин. Евросеть, Ebay, Ozon и подобные порталы создать нельзя, но небольшие — можно. Он не будет лучше специализированных движков, типа ShopScript или csCart. По магазинной части он им проиграет, без вопросов. Но как сайт+магазин — тут у MODX равных нет. Хочется верить, что и miniShop среди готовых решений для создания магазинов на Revolution выглядит неплохо.

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

Если в дальнейшем станет ясно, что надо бы еще кое-где miniShop расширить — выйдет версия 1.9.0. Потом 2.0.0 и так далее.

Окончено именно активное развитие проекта, когда я выпускал новую версию раз в неделю\две.

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

Updated 2

Обнаружился баг работы личного кабинета с измененными процессорами. Исправил и выложил версию 1.8.1.

Следующая заметка
Синхронизация юзеров IPB с MODX


Комментарии ()

  1. Андрей Розум 24 июля 2012, 17:33 # 0
    Сам не смотрел, но со слов сына у вас в 1.8.1. оба варианта обновления статуса корзины закомментированы — и старый, и новый.
    Может оттого и было обилие вопросов по ней.
    1. Василий Наумкин 24 июля 2012, 18:34 # 0
      Текущее состояние файла — goo.gl/Vgzxs, Старый закомментирован, новый — нет

      Коммит с заменой методов: goo.gl/IkrN4

      История изменений файла — goo.gl/KJUbb
      1. Андрей Розум 28 июля 2012, 15:14 # 0
        Посмотрел. Похоже он говорил про эту функцию, а я неверно понял:

        $.post(url, {action: 'getCartStatus'}, function(data) {
        data = $.parseJSON(data);
        cartStatus(data);
        })
    2. Denys Butenko 31 июля 2012, 09:14 # 0
      Попробовал мини-корзину и заметил недочет или баг или странность. В общем, display: none убирается в 50% случаев. Тоесть, обновляем страницу, смотрим исходный код и видим на двух дивах style=«display: none;» Как бы вылечить, какие идеи?
      1. Василий Наумкин 31 июля 2012, 09:19 # 0
        Это явно кэш. Попробуйте поменять условие как тут https://github.com/bezumkin/miniShop/pull/58/files
        1. Denys Butenko 31 июля 2012, 09:38 # 0
          Вызываю через [[!minishop...]].
          Сделал как вы написали, вроде помогло. Но теперь другая «беда», если обновить страницу пишет «В корзине пусто», жмем добавить товар и сразу становится +1 от предыдущих. Тоесть У нас в корзине 4 товара, обновляем страницу — пишет Пусто, жмем добавить — 5 штук в корзине.
          1. Denys Butenko 31 июля 2012, 09:42 # 0
            Изменил немного сниппет:
            [[+count:lt=`1`:then=`
            Корзина
            Ваша корзина пуста
            `:else=`
            Корзина
            Товаров: [[+count]] шт.
            На сумму: [[+total]] грн.
            Оформить заказ

            `]]

            Вроде лучше…
            1. Denys Butenko 31 июля 2012, 09:44 # 0
              Теперь, если корзина пуста и добавить товар, не обновляется :) А если товар был и еще добавить обновляется…
      2. Evgeny Korchagin 04 августа 2012, 16:30 # 0
        Магазин без JS умеет работать?
        1. Илья Уткин 04 августа 2012, 17:09 # 0
          Мне интересно, а какой магазин сейчас работает без js? Редко такие встречал…
        Добавление новых комментариев отключено.