Релиз SBShop 1.0 — интернет-магазин на MODX Evolution

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

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

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

    Для чего SBShop нужен?


    На тот момент, когда я начал работать над SBShop, а было это 2,5 года назад, очень не хватало действительно серьезного решения для разработки интернет-магазина на базе MODX Evolution. Но переходить на иные полноценные решения не очень хотелось, так как MODX — это наше все (и гибкость, и простота, и мощь), а также я был отягощен былым опытом работы с интернет-магазинами в студии.

    А нам нужно было решение для разработки интернет-магазина.

    В итоге, посмотрев на разные решения, я решил, что лучше будет заняться своим велосипедом, чтобы воплотить свои идеи, чем бороться с другими решениями и уходить от Evo.

    Что из этого получилось — судить вам.

    Технические особенности



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

    Расширение ядра и хранение данных

    В первую очередь вы встретите здесь новый вид расширения, с которым вам скорее всего еще не доводилось встречаться. SBShop — расширение ядра MODX в первую очередь. Благодаря этому вы можете получить доступ к любым данным интернет-магазина через $modx->sbshop. Есть также модуль для управления и вспомогательный плагин со сниппетом. Это важная особенность, которая создает некоторые нюансы.

    Кроме того, стоит отметить, что все разделы, товары, заказы и т.д. хранятся в отдельных таблицах. Это вторая важная особенность.

    В итоге товаров можно создавать огромное over 9000 количество, так как они не привязаны к ресурсам MODX, но при этом многие стандартные расширения MODX ничего не знаю о магазине. Они не могут сделать для него меню или обеспечить поиск. Для всего этого требуются отдельные решения.

    ЧПУ

    Оно есть. Не смотря на то, что все данные в отдельных таблицах вы получите каталог с привычным ЧПУ, как на обычных страницах.

    Кеширование

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

    API

    Расширение ядра позволяет использовать собственное API SBShop. Это дает возможность сделать какие-то дополнительные решения. Допустим легко можно сделать сниппет, который будет делать врезку о товаре прямо в содержимое текстовой страницы.

    Шаблоны

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

    Документация

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

    Возможности интернет-магазина


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

    • управление разделами и товарами
    • простое управление характеристиками (действительно простое)
    • удобное управление изображениями и файлами для товара
    • опциональные комплектующие для товара
    • готовые комплектации с определенным набором комплектующих
    • массовое регулирование цен с помощью надбавок
    • управление заказами
    • экспорт в YML


    Чего еще нет:

    • кеширование
    • поддержка платежных систем
    • учет доставки
    • регистрация пользователя и личного кабинета
    • интеграция с 1С


    Демо-версия



    Сделана очень условно для экономии времени. Но в управлении можно легко потренироваться и понять что в результате получилось.



    Итог


    Буду рад любым полезным советам, идеям, предложениям и если кто-то возьмет на вооружение эту разработку. Все бесплатно и открыто — GPL.

    UPD1: Периодически админка недоступна (заблокирована). Некоторые посетители тренируются в ее блокировке, так как все открыто. Пытаюсь минимизировать влияние механизма блокировки.

    UPD2: Вход упрощен. Должно все работать.

    UPD3: Демки больше нет пока, так как она не дает кому-то покоя, что приводит к ее моментальной поломке. Видимо эта публикация кого-то расстроила или перешла кому-то дорогу.
    Поделиться публикацией

    Комментарии 34

    • НЛО прилетело и опубликовало эту надпись здесь
        0
        Разблокировал.
          0
          Мне кажется, что проще увеличить лимит на неправильные пароли.
          К сожалению, даже на хабре попадаются неадекватные личности.
        0
        Господа, если вы считаете, что ломать открытую админку это весело, то я могу вам предложить другую ссылку. Сходите просто на демку MODX Evo. Эти демки постоянно обновляются, поэтому делайте с ними что хотите. Но дайте пожалуйста людям посмотреть то зачем они туда идут. Или напишите из-за чего у вас такие позывы возникают, может вам что-то не нравится принципиально.
          0
          Пакетного импорта/обновления товаров нет?

          После интеграции с 1С решение будет соответственно платным?
            +1
            Было бы интересно узнать, чем ваше решение лучше Shopkeeper'а.
            Не буду защищать шопкипер, но в нем давно реализован пункты из раздела «Чего еще нет», за исключением интеграции с 1С (есть модуль импорта/экспорта CSV/XLS/XLSX)
              0
              Присоединяюсь у вопросу — после беглого осмотра лёгкое ощущение дежавю, что всё примерно так же как в shopkeeper-е
                0
                Ответ чуть ниже.
                  0
                  большое Вам спасибо, за то что отправили в это эротическое путешествие
                    0
                    В каком смысле? Вы про то, что я вам дал ссылку на ответ ниже или на ваш вопрос я не ответил?
                      0
                      а вот сходите по своей ссылке ;)
                        +1
                        %(

                        Извините, я даже представить не могу как такое получилось. Правильная ссылка — вот.

                        Похоже теперь буду всегда перепроверять ссылку на 10 раз. Извините пожалуйста еще раз за это идиотское недоразумение.
                0
                Спасибо за нормальный вопрос. Как-то мало комментариев по теме у нас выходит.

                По вопросу. Когда я начал разработку, то Shopkeeper использовал исключительно ресурсы MODX, упираясь в их производительность. А характеристики были полностью представлены TV-параметрами. Для нас это было критичнее всего, так большим набором характеристик в виде TV-параметров управлять очень сложно.

                В итоге у Шопкипера появилась затем версия с данными в отдельных таблицах.

                Также нам нужны были опции и готовые комплектации, а это не сильно вписывалось в общую картину.

                Более того, Шопкипер сам по себе представлял скорее набор разрозненных частей, которые можно собрать вместе и заставить работать. Это в целом для нас было сложнее в плане разработки.

                К сожалению давно уже не следил за тем, что там происходит.

                К тому же у нас совсем разные цели, что очень важно. Фактически Шопкипер — продукт для получения прибыли. К нему продаются разные компоненты. SBShop — это побочный продукт практической разработки для одного магазина. Никто пока не планирует его монетизировать вообще. Это накладывает отпечаток в проработке разных мелочей. К примеру, посмотрите на формирование шаблона характеристик в разделе. Создаете один товар, добавляете характеристики, а при создании второго товара вы увидите уже набор тех же характеристик с пустыми значениями. Нам требовалось это для упрощения работы. И таким затачиванием мелочей мы занимаемся постоянно.

                Но поймите меня правильно, я не говорю, что вы должны взять и отказаться от Шопкипера. Это замечательное решение. И я очень уважаю его автора. И не думаю что конкуренция ему сильно повредит, хотя напрямую о конкуренции я вообще не думаю. Я просто буду продолжать свою работу.
                +1
                Как культурно…

                image
                  +2
                  я так понял, что это — тоже результат свободного доступа в админку…
                    0
                    Да, есть разные деятели, которые тренируются :))
                    То доступ заблокируют, то ссылку разместят, то удалят все. Периодически сайт обновляется.
                    +1
                    это результат необратимых процессов в мозге некоторых…
                      +1
                      $sToday = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d"), date("Y")));
                      
                      – Зачем так?
                        0
                        А лучше как?
                          +1
                          $sToday = date('Y-m-d');
                          

                            0
                            Действительно. Сейчас я конечно не помню из-за чего там такой наворот. Работы там еще хватает.
                              0
                              костыль, похоже, тупо скопипастили из другой функции, где нужно было указать время 00:00:00, а не текущее.
                                0
                                а что делать, если сервак в штатах и надо поправить время на московское?
                                или на летнее/зимнее?
                            0
                            #
                            # SBShop Demo Database Dump
                            #
                            #
                            # Host: localhost
                            # Generation Time: Apr 16, 2012 am30 11:08
                            # Server version: 5.0.51a-17
                            # PHP Version: 5.2.6-1+lenny8
                            # Database: `demo_sbshop`
                            #

                            # — #
                            # Table structure for table `modx_active_users`
                            #

                            DROP TABLE IF EXISTS `modx_active_users`;
                            CREATE TABLE `modx_active_users` (
                            `internalKey` int(9) NOT NULL default '0',
                            `username` varchar(50) NOT NULL default '',
                            `lasthit` int(20) NOT NULL default '0',
                            `id` int(10) default NULL,
                            `action` varchar(10) NOT NULL default '',
                            `ip` varchar(20) NOT NULL default '',
                            PRIMARY KEY (`internalKey`)
                            ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Contains data about active users.';

                            #
                            # Dumping data for table `modx_active_users`
                            #

                            INSERT INTO `modx_active_users` VALUES ('1','admin','1334552888','','93','95.29.161.75');

                            # — #
                            # Table structure for table `modx_categories`
                            #

                            DROP TABLE IF EXISTS `modx_categories`;
                            CREATE TABLE `modx_categories` (
                            `id` int(11) NOT NULL auto_increment,
                            `category` varchar(45) NOT NULL default '',
                            PRIMARY KEY (`id`)
                            ) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='Categories to be used snippets,tv,chunks, etc';

                            #
                            # Dumping data for table `modx_categories`
                            #
                              +2
                              Вы надеюсь не очень сложным путем это получили, так как доступ там полный и дамп базы легко получается путем перехода в Инструменты -> Резервное копирование ;-)
                                0
                                :( любим мы искать сложные пути
                              0
                              Какие задачи Вы решили данной разработкой? Уже давно есть joomla virtuemart и drupal ubercart…
                                0
                                joomla не фонтан, а в drupal разбираться надо, во всяком случае не самая лёгкая cms на мой взгляд.
                                  0
                                  Лучше тогда приводить в пример Magento или OpenCart… Или действительно брать иное решение для MODX. Потому как здесь изначально выбор идет скорее между CMS. И результат выбора — MODX.
                                    0
                                    Я пока разрабатываю магазины на Drupal+Ubercart, но начинаю смотреть в сторону ModX Revo
                                      0
                                      Советую присмотреться к таким решениям на Revo, как классический Шопкипер и более молодое решение — miniShop.
                                  0
                                  А какие задачи решили? фильтрация по товарам будет?
                                    0
                                    Андрей, мы в первую очередь создали себе рабочий инструмент и решили с его помощью собственные задачи. Хотя слово «решили» здесь не уместно, так как развитие происходит непрерывно.

                                    Что касается фильтрации, то уточните пожалуйста о чем речь. Сейчас уже есть фильтрация по различным параметрам. Правда над ними еще требуется значительно поработать. В первую очередь мы планируем добавить новый тип фильтра, который будет учитывать использование динамического диапазона (от N до M) и выявление пустых пересечений (условий, по которым товар отсутствует).
                                    +1
                                    Похоже кто-то очень сильно расстроился после моей публикации :-D.

                                    Извините, но демки больше нет пока. Если кому-то интересно, то напишите, я подготовлю дамп для локальной установки.

                                    А вам, товарищи кулхацкеры должно быть стыдно. «Взламывать» абсолютно открытую админку да и еще то, что раздается бесплатно. Это и низкий поступок и бессмысленный.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое