Огляд Shop-Script 5

    Привіт! Я керую розвитком Shop-Script . Протягом року я збирав питання, які виникають у користувачів і розробників, початківців працювати з Shop-Script 5 (останньою версією продукту), і в цьому пості оформив їх у вигляді окремої оглядової статті. Промо-сайт промо-сайтом, документація теж іноді корисна, але завжди простіше познайомитися з продуктом, прочитавши або проскроллів всього одну статтю. Під катом — докладної огляд Shop-Script 5 з описом ключових можливостей і того, як працює движок, 5 МБ скріншотів, трохи статистики і планів на майбутнє.
 
 
 
 
 
 Shop-Script 5 призначений для створення роздрібних інтернет-магазинів. Для розуміння портрета типового інтернет-магазину, для роботи якого буде корисний Shop-Script 5, слід представити компанію з невеликим штатом, яка знаходиться у великому російському місті, має кілька складів (наприклад, офіс, склад і точку продажів), працює з 1С, здійснює доставку замовлень кур'єром і поштою. Платформа гнучка і може бути застосована для роботи інтернет-магазинів в будь-якій країні, проте найбільш поширений тип компаній, які використовують Shop-Script 5 сьогодні, відповідає саме такому портрету.
 
  Демо Shop-Script 5 : вітрина , бекенд (введіть будь логін і пароль для входу в бекенд)
  Завантажити : . tar.gz (4.5 МБ) або на GitHub (приватний репозиторій, доступ надаємо всім розробникам щодо заповнення форми)
 Сайт продукту: http://www.shop-script.ru/
 
 Установка
 
 Shop-Script 5 — це додаток на основі фреймворка Webasyst . Розроблено на основі PHP 5.2 + / MySQL 4.1 + / Smarty / jQuery.
 
 Для установки Shop-Script 5 потрібно викачати дистрибутив (4.5 МБ; архів вже включає в себе фреймворк і Shop-Script 5), скопіювати всі файли дистрибутива в папку на сервері, потім відкрити скрипт установки в браузері і ввести дані доступу до БД.
 
  
 
  
 
  
 
 Детальна інструкція з встановлення .
 
  Якщо не хочеться нічого встановлювати, то Shop-Script 5 можна спробувати в дії, створивши тестовий магазин в веб-сервісі на сайті продукту.
 
 Початок використання
 
 Бекенд (админка):
 
  
 
 Фронтенд (вітрина):
 
  
 
 Товари можна додати різними способами: по одному через веб-інтерфейс або імпортувати відразу багато товарів з CSV-файлу, YML-файлу (Яндекс.Маркет), 1С або навіть перетягнувши пачку фотографій в браузер. Можливість імпорту з набору фото особливо корисна, коли вже є багато готових фотографій товарів (магазини DIY, хенд-мейд), і все, що залишається — це придумати назви і призначити ціни.
 
  
 
 Інтерфейс
 
 Припустимо нудну частину імпорту товарів і відразу подивимося інтерфейс бекенда з демо-контентом:
 
  
 
  
 
  
 
  
 
  
 
 В якості WYSIWYG-редактора використовується Redactor . Редактор коду — на основі Ace .
 
  
 
 Дефолтна тема дизайну магазина з товарами:
 
  
 
 Дефолтна тема дизайну відразу «з коробки» підтримує багато корисних фіч, таких як мікророзмітки Schema.org , адаптивний дизайн, автоматичну підтримку @ 2x-картинок товарів для ретиніт.
 
  Бекенд і фронтенд найкраще подивитися в демо .
 
 Файлова структура і MVC
 
 Shop-Script 5, як і будь-який додаток на основі Webasyst, розроблений відповідно до принципу проектування MVC. Всі запити в бекенд і фронтенд проходять через index.php і далі маршрутізіруются згідно з правилами роутінга: спочатку — за додатками, потім — по екшенам всередині програми.
 
  
 
  Детальніше про механізм роботи додатків Webasyst краще почитати в документації .
 
 Весь код Shop-Script 5 — в папці wa-apps / shop /
 
  
 
 Реалізація всієї основної логіки роботи Shop-Script 5 — в lib / actions / (екрани), lib / classes / (об'єкти) та lib / model / (робота з даними).
 
 Структура даних
 
 У базі даних 60 таблиць. Загальна ER-діаграма Shop-Script 5:
 
  
 
 Модель управління товарами розроблена для роботи з різними незалежними типами товарів в рамках одного магазину. Можна продавати в одному магазині, наприклад, і побутову техніку, і взуття, і при цьому інтерфейс управління товарів не буде перевантажений.
 
 Основні сутності, на яких будується управління товарами:
 
      
    
    
    
    
  
Тип товарів
  
Служать внутрішньої класифікації товарів і незалежної організації наборів різних характеристик (властивостей) товарів, поділу товарів по вітринах (різним сайтам). Приклад: Побутова техніка, Автозапчастини, Взуття.
  
Товар
  
Те, що представлено на вітрині як логічно єдиний продукт на окремій сторінці інтернет-магазину. Товар може належати тільки одному типу.
 Приклад: iPhone 5S
  
Артикул
  
Це те, що можна покласти в кошик і замовити. Кожен товар може мати багато артикулів. Для артикулу задається ціна, залишок на складі.
 Приклади:
iPhone 5S золотий 16 ГБ
, iPhone 5S білий 32 ГБ
  
Категорія товарів
  
Зовнішня класифікація товарів. Кожна категорія товарів має свою адресу на вітрині і може бути опублікована (або прихована) на різних вітринах інтернет-магазину. Категорія може бути статичною (набірної) або динамічної (на основі деякого правила). Категорії можуть бути вкладені один в одного.
  
Список товарів
  
Дозволяє вбудовувати окремі списки товарів в в шаблони дизайну або на довільних інформаційних сторінках сайту. Приклад: спецпропозиції в слайдері на вітрині або в боковій колонці.
  
 Найцікавіші фичи
 
 Shop-Script 5 надає велику кількість фіч відразу «з коробки», багато можливостей можна додати за допомогою плагінів, і перераховувати їх все тут буде безглуздо. Для повноти огляду згадаю деякі з ключових можливостей:
 
 
     
  • Многовітрінность : правила маршрутизації задаються залежно від домену і дозволяють на базі однієї установки Shop-Script 5 відкрити відразу кілька інтернет-магазинів. На кожній вітрині буде опублікований свій набір товарів, свій sitemap.xml, своя тема дизайну.
     
     
  •  
  • Фільтрація товарів: для кожної категорії товарів можна задати свій набір характеристик, за якими буде проводитися підбір товарів.
     
     
     
  •  
  • Пошук товарів працює на основі індексу, який збирається з різних параметрів товарів: найменувань, описів, тегів, значний характеристик і т.д. У налаштуваннях магазину можна варіювати пріоритет (вага), з яким враховується кожен параметр.
     
     
     
     
  •  
  • Зображення товарів «на льоту» : із завантаженого оригінального зображення товару ескізи створюються автоматично за запитом. Наприклад, якщо в імені файлу (в урле) вказати .200 x250.jpg, то буде створено зображення саме такого розміру.
     
     
  •  
  • SEO : початкова підтримка мікророзмітки Schema.org в базових темах дизайну, можливість використовувати в заголовках сторінок інформацію про товари у вигляді змінних («Купити {$ name} в Москві»), автоматична генерація sitemap.xml і т.д.
     
     
  •  
  • Облік товарів на декількох складах з можливістю перегляду журналу руху товарів по кожному складу.
     
     
  •  
  • Відкладені повідомлення покупцям поштою та SMS: наприклад, подяку за покупку через 3 дні після оплати замовлення.
     
     
  •  
  • Рекомендації товарів: на підставі того, що купували інші клієнти (cross-selling) і на підставі підбору товарів зі схожими характеристиками (up-selling).
  •  
 Яндекс.Маркет, обмін даними з «1С: Управління торгівлею», підтримка всіх основних платіжних систем і т.д. — опис всіх можливостей краще подивитися на сайті продукту.
 
 
 Теми дизайну: прикручуємо свій дизайн
 
  wa-apps / shop / themes / THEME_FOLDER / — оригінальні файли теми дизайну, які повністю оновлюються (перезаписуються) при оновленні теми дизайну.
  wa-data/public / shop / themes / THEME_FOLDER / — змінені користувальницькі шаблони дизайну, які при оновленнях теми не міняються (по суті форк).
 
 Якщо є копія в wa-data/public /, то буде використана вона, якщо ні, то оригінал з папки додатки wa-apps /.
 
 Кожна тема дизайну — це окрема папка з набором HTML / Smarty-шаблонів, CSS, JS, картинками і файлом опису theme.xml.
 
 Для впровадження свого дизайну найпростіше скористатися вбудованим дизайну-редактором, в якому можна редагувати базові настройки теми дизайну (вони визначається в theme.xml):
 
  
 
 І кожен окремий шаблон теми дизайну (HTML, CSS, JS) безпосередньо в браузері:
 
  
 
 Одна із самих класних фіч тим дизайну — можливість в шаблоні дизайну однієї програми отримати дані з іншої програми. Наприклад, в будь-якому додатку можна зробити такий виклик — {$ in_the_cart = $ wa-> shop-> cart ()} — і отримати в змінну {$ in_the_cart} масив всіх товарів в кошику користувача. Або ж з іншої програми, наприклад, з «Блога»: {$ best_posts = $ wa-> blog-> posts ('/ tag / best')}.
 
 Плагіни: розширюємо базову функціональність інтернет-магазину
 
 Базова функціональність Shop-Script 5 розширюється за допомогою плагінів, реалізація яких знаходиться в папці wa-apps/shop / plugins /
 
 Для створення свого плагіна запустіть в консолі:
 
 
php wa.php createPlugin shop brands

 Запуск такої команди створить в папці Shop-Script 5 необхідну для плагіна файлову структуру, яка аналогічна структурі самого програми: img, js, lib, templates. Архітектура плагіна практично повністю повторює архітектуру програми, все той же MVC і ті ж підходи.
 
  
 
 Плагіни «чіпляються» до основного функціоналу і встріваются в Shop-Script 5 за допомогою подій і хуков. Наприклад:
 
 1. Знаходимо відповідний хук в документації . Припустимо, потрібно вивести щось в блоці навігації на вітрині магазину — за це відповідає хук frontend_nav .
 
 2. В конфіге додатки lib / config / plugin.php оголошуємо метод, який слухає подія, пов'язана з цим хуком:
 
 
'handlers' => array(
    'frontend_nav' => 'frontendNav',
),

 3. Пишемо код і виводимо HTML безпосередньо в PHP (якщо HTML простий):
 
 
<?php

class shopBrandsPlugin extends shopPlugin
{
    public function frontendNav()
    {
        $feature_id = $this->getSettings('feature_id');
        $feature_model = new shopFeatureModel();
        $feature = $feature_model->getById($feature_id);
        if (!$feature) {
            return;
        }
        $values = $feature_model->getFeatureValues($feature);

        if (waRequest::param('type_id') && is_array(waRequest::param('type_id'))) {
            $types = waRequest::param('type_id');
        } else {
            $types = array();
        }

        $existed = $this->getByTypes($feature['id'], $types);

        $html = '<ul class="menu-v brands">';
        foreach ($values as $v_id => $v) {
            if (in_array($v_id, $existed)) {
                $url = wa()->getRouteUrl('shop/frontend/brand', array('brand' => str_replace('%2F', '/', urlencode($v))));
                $html .= '<li'.($v == waRequest::param('brand') ? ' class="selected"' : '').'><a href="'.$url.'">'.htmlspecialchars($v).'</a></li>';
            }
        }
        $html .= '</ul>';
        return $html;
    }

 Або ж передаємо дані в шаблон, форматування визначаємо в шаблоні:
 
 
$this->view->assign('features', $values);

 І потім виводимо в ньому в
{foreach $features as $key => $val} … {/foreach}

 
  Подивіться детальний туториал розробки плагіна «Бренди» в документації .
 
 Додатки: розширюємо функціональність ще далі
 
 Якщо функціональності плагінів не вистачає і треба написати свій Shop-Script 5 зробити щось більш масштабне, можна створити окремий додаток Webasyst, яке з'явиться в основному меню навігації і працюватиме незалежно від Shop-Script 5.
 
  
 
 Як і плагін, створити свій додаток-пустушку можна також з консолі:
 
 
php wa.php createApp mysupercoolapp -name Мое приложение -version 0.0.1

 Залежно від специфіки запитів ваших клієнтів ви зможете створювати додатки з будь логікою роботи: закупівлі, управління проектами, пробки, маршрути, ферму.
 
  Подивіться детальний туториал розробки додатку «Гостьова книга» або готові програми для прикладу.
 
 API
 
 Shop-Script 5 надає 44 API-методу для читання і запису даних ззовні.
 
 Авторизація заснована на протоколі OAuth 2.0. Формати обміну даними: JSON і XML.
 
 Залежно від методу виклик проводиться через GET або POST. Наприклад, метод читання даних про товар: http://demo1-ru.webasyst.com/api.php/ shop.product.getInfo? Id = 65
 
 Впровадження і статистика
 
 Найбільше впровадження: Enter Зв'язковий . Shop-Script 5 використовується в інфраструктурі «Enter Зв'язковий» в якості CMS .
 
 На даний момент зареєстровано вже понад 3500 ліцензійних установок Shop-Script 5 (безкоштовні і пробні установки не рахуються). Незважаючи на те, що загальна кількість інтернет-магазинів, що працюють на основі старих версій продукту, все ще значно перевищує кількість користувачів Shop-Script 5 (за даними Ruward на сьогодні це 18 600 сайтів), динаміка переходу на нову версію зростає.
 
 Доступ до приватного репозиторию Shop-Script 5 на GitHub отримали вже понад 700 розробників.
 
 Маркет
 
  Магазин Webasyst — маркет, в якому свої рішення на основі фреймворку Webasyst може опублікувати будь-який розробник. Наша комісія за подання продукту на сайті Webasyst і в «Інсталлер» (додаток-клієнт для встановлення нових програм), установку і доставку оновлень до користувачів становить всього 20%.
 
 На даний момент наші партнери-розробники опублікували в магазині Webasyst 11 додатків, більше 150 плагінів і 40 тим дизайну.
 
 Загальні продажі розробників вже перевищили 12 мільйонів (!) Рублів , і це тільки за перші дев'ять місяців роботи маркету. Найбільшою популярністю користуються плагіни і теми дизайну Shop-Script 5: більше 6 мільйонів рублів заробили розробники плагінів, понад 5 мільйонів рублів — дизайнери тим, іоколо півмільйона рублів — розробники додатків (хоча потенціал зростання у програм, безумовно, найбільший).
 
  Запрошуємо розробників і дизайнерів створювати продукти, які власники Shop-Script 5 і користувачі Webasyst будуть із задоволенням купувати: www.webasyst.ru/developers/store/
 
 Ліцензування
 
 Shop-Script 5 — це платна CMS. Для відкриття працюючого інтернет-магазину необхідно придбати ліцензію вартістю 9999 рублів або скористатися веб-сервісом вартістю 798 рублів на місяць (599 рублів за Shop-Script 5 без доступу до вихідного коду + 199 рублів за хостинг: 2 ГБ, SSL, домен і т. д.).
 
 Для розробників ліцензія надається безкоштовно.
 
 Розробляючи Shop-Script 5, ми розглядали різні варіанти монетизації, у тому числі варіант повного переходу на модель розповсюдження open source, але в результаті реалізували цей варіант не в кінцевому рішенні для інтернет-магазинів (не в самому Shop-Script 5), а в його основі і загальній платформі, на якій він працює — фреймворці Webasyst — і додатках-сателітах, який в даний момент доповнюють функціональність Shop-Script 5 (хоча ці програми самі по собі теж є повноцінними рішеннями для своїх завдань, ставлення до них і їх позиціонування поки що побудовано все ж навколо інтернет-магазинів — я говорю в першу чергу про додатки «Сайт », «Блог » і «Фото »).
 
 Про проект
 
  
 
 Проекту Shop-Script цього року виповнилося 12 років. Перша версія Shop-Script 1.0 була випущена ще в 2002 році, і сьогоднішнє покоління є вже п'ятим за рахунком. Кому цікаво, почитайте історію розвитку проекту .
 
 Так, ми знаємо про те, що застарілі версії продуктів Shop-Script розробники, дизайнери та хабрапользователі не дуже полюбляють. Дійсно, є за що. Тому Shop-Script 5 і фреймворк Webasyst були розроблені з нуля і успадкували від старих версій тільки назва і досвід.
 
 Трохи про плани розвитку
 
 Буде нудно говорити про конкретні фічах, які з'являться в наступних оновленнях Shop-Script 5, і краще сказати про загальний напрямок розвитку платформи — це інструменти, які допоможуть кінцевим користувачам управляти не контентом, а розвитком бізнесу, краще оцінювати ефективність роботи компанії та аналізувати, як підвищити продажі.
 
 Наприклад, вже в найближчих версіях в базовій версії Shop-Script 5 ми реалізуємо підтримку оцінки ліквідності товарів: замість списку товарів-бестселерів можна буде працювати з більш значущим (з точки зору прибутку) списком самих ліквідних і рентабельних товарів: з обліком і продажів протягом останнього часу, і закупівельної вартості, і вартості складського зберігання — все це в базовій версії CMS без будь-яких додаткових аналітичних додатків. Це дозволить власникам магазинів краще знати структуру своїх продажів: стежити не тільки за тим, який товар краще купують, а за тим, на чому можна більш імовірно отримати прибуток.
 
 Крім цього — програми для CRM, підтримки клієнтів, організації справ, колективної роботи і т.д. Поступово функціональність CMS поповниться функціональністю інтранета. У Webasyst є все для об'єднання двох цих напрямків в єдиному інтерфейсі.
 
 Спасибі за увагу!
 
 

Запрошуємо розробників

  Запрошуємо розробників до спільної роботи над новими додатками: реєструйтеся в програмі для розробників і створюйте свої корисні інструменти. Цікаві проекти ми з задоволенням прорекламіруем на головній сторінці магазину Webasyst (маркету) і в нашому блозі. У Shop-Script 5 вже велика аудиторія, яка із задоволенням купує якісні та корисні рішення!
 
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.