support

Vamshop 3 - Про механизм установки модулей в VamShop, связку CakePHP + Composer + GitHub

Recommended Posts

support

Всё, о чём я расскажу в данной заметке, в принципе, описано в документации к CakePHP, вот здесь https://book.cakephp.org/3.0/ru/plugins.html

Я лишь опишу всё более просто и в привязке к VamShop 3, как работает система модулей в VamShop 3, как между собой интегрированы VamShop 3 + CakePHP + Composer + Github

Сразу несколько пояснений, что для чего.

1. Для чего нужен GitHub в VamShop 3?!

GitHub используется для разработки модулей, для хранения исходного кода, для ведения всех изменений в коде, т.е. система контроля версий.

Это хранилище модулей, по сути, т.е. хранилище исходного кода VamShop, модулей VamShop.

2. Для чего нужен Composer в VamShop 3?!

Вот была заметка про Composer, для чего он нужен в VamShop 2 - http://blog.vamshop.ru/2017/11/09/%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-composer-%D0%B2-vamshop/

В VamShop 3 по сути всё тоже самое, только интеграция стала ещё больше и ещё удобнее теперь работать с пакетами, модулями.

В VamShop 3 composer используется очень много и это важный элемент CakePHP проекта и движка VamShop в целом.

Composer можно использовать для установки VamShop к себе на сервер.

Composer используется для сборки пакетов, зависимостей, выгрузки используемых в VamShop библиотек.

Composer используется для установки модулей (расширений) в VamShop.

Composer можно использовать для обновления Вашей копии VamShop и всех установленных модулей в VamShop.

 

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

Но это только на первый взгляд так может показаться.

Если один раз разобраться (а данную заметку я как раз пишу для того, что б быстрее понять можно было, что к чему), Вы экономите огромное количество своего времени на:

1. Развёртывание VamShop на хостинге.

2. Установку VamShop.

3. Загрузку библиотек и файлов.

4. Загрузку и установку модулей в VamShop.

 

 

Share this post


Link to post
Share on other sites
support

Как происходит установка модулей в VamShop 3?

Предпочтительный вариант - использовать composer.

Допустим, у Вас уже установлена копия VamShop 3.

Всё работает, всё настроено.

Вы хотите расширить функциональность магазина установив какой-либо модуль.

Например установить модуль Google Analytics - https://github.com/vamshop/analytics

Есть два пути установки модуля:

1. Устанавливать всё вручную, т.е. скачивать файлы модуля в архиве, распаковывать архив, переписывать файлы модуля из архива в Ваш магазин.

2. Либо предпочтительный метод, используя composer. Сэкономив кучу своего времени и автоматизировав весь процесс.

Рассмотрим оба варианта на примере установки модуля Google Analytics в VamShop 3.

Начнём с самого удобного и быстрого способа, используя встроенную в VamShop 3 интеграцию между CakePHP + Composer + GitHub.

У нас уже есть установленная копия VamShop 3 и нам нужно добавить новый модуль Google Analytics используя composer.

Что мы делаем:

1. Через консоль заходим в корневую папку магазина, там где находится composer.json файл.

2. Говорим композеру, что мы хотим установить новый модуль в VamShop, т.е. даём команду:

composer require vamshop/analytics

Всё, можно сказать, Вы установили модуль Google Analytics в VamShop.

Вот как выглядит на скрине:

vamshop3-composer-install-module.png.cba

Модуль скачался, все необходимые файлы обновились.

Вы теперь просто заходите в Админке - Расширения - Модули и напротив модуля analytics нажимается Активировать.

Активация модуля (шаблона) через консоль

Можно вообще не заходить в админку, в браузер, для активации модуля (шаблона).

Для этого в консоли, в корневой папке магазина выполните команду:

bin/cake ext activate plugin Analytics

Вы тем самым активируете наш модуль Analytics.

Это тоже самое если бы Вы зашли в Админку - Расширения - Модули и нажали Activate напротив модуля Analytics.

Деактивация модуля через консоль

bin/cake ext deactivate plugin Analytics

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

В Админке - Расширения - Модули модуль становится так же выключенным.

 

А теперь чуть подробнее, что происходит в VamShop 3 при выполнении этой команды.

1. При выполнении команды:

composer require vamshop/analytics

composer ищет среди доступных пакетов vamshop/analytics.

Список доступных пакетов хранится на http://packagist.org

т.е. что б composer нашёл нужный пакет и не написал ошибку, Вы должны добавить свой пакет (модуль) на packagist.org, в этом нет ничего сложного. Статья не об этом.

Возможно, в другой заметку расскажу как это делается.

Будем считать, что Ваш VamShop модуль уже добавлен в список доступных пакетов для composer, т.е. добавлен на сайт packagist

Вот наш модуль Google Analytics для VamShop уже добавлен - https://packagist.org/packages/vamshop/analytics

Что значит команда composer require vamshop/analytics

composer require - эта команда говорит композеру, что надо в список пакетов, т.е. в файл composer.json в корневой папке VamShop, в секцию require добавить ещё одну зависимость, т.е. добавить ещё 1 пакет: vamshop/analytics

После выполнения этой команду, в итоге у нас обновится корневой файл composer.json:

5b18e6bd9254d_Screenshotfrom2018-06-0711

Видно, что в список пакетов в секции require добавилась строка:

        "vamshop/analytics": "^3.0",

 

Что значит vamshop/analytics?

Это github репозиторий откуда composer будет скачивать исходный код, т.е. файл модуля.

Репозиторий - это то место, где хранится исходный код, в данном случае https://github.com/vamshop/analytics

Куда composer записывает скачиваемые в VamShop модули?

Согласно документации CakePHP (а VamShop 3 это стандартный CakePHP 3 проект и всё, что описано в документации, применимо и к VamShop 3) - https://book.cakephp.org/3.0/ru/plugins.html

Все скачиваемые модули сохраняются в /vendor директории Вашей копии VamShop 3, т.е. в корневой папке магазина есть папка vendor, куда всё и скачивается.

Что происходит дальше после загрузки пакета (модуля) в VamShop?

После того как composer скачал пакет (модуль), вносятся неоходимые правки в движок, т.е. composer сообщает VamShop, что так и как, я вот скачал такой-то пакет (модуль), принимай его в работу:

1. Добавляется сам пакет, в данном случае скачивается репозиторий https://github.com/vamshop/analytics и записывается в /vendor/vamshop/analytics

2. Обновлятся в корневой папке composer.json, добавляется новый пакет vamshop/analytics в раздел require.

3. Обновляется список установленных cakephp модулей в файле /vendor/cakephp-plugins.php

4. Обновляется список установленных composer пакетов в файле /vendor/composer/installed.json

 

Всё, начиная с этого момента ядро VamShop знает, что у нас появился новый модуль и выводит его в общий список в Админке - Расширения - Модули.

Для этого используются классы ядра:

/app/vendor/vamshop/vamshop-core/Core/src/Plugin.php

/app/vendor/vamshop/vamshop-core/Extensions/src/Controller/Admin/PluginsController.php

Эти классы, если совсем коротко говорить, просто читают информацию, которую добавил composer, и выводят в админке.

 

 

 

Share this post


Link to post
Share on other sites
support

Что происходит в движке при установке модуля?

Опять же, принципе все описаны в документации - https://book.cakephp.org/3.0/ru/plugins.html

Я лишь постараюсь кратко и коротко объяснить всё это "человеческим" языком.

При нажатии кнопки Активировать (Activate) в Админке - Расширения - Модули напротив модуля ядро читает информация из модуля и делает то, что ему говорят.

Правится список установленных модулей в базе данных.

В таблице settings меняется значение опции Hook.bootstraps, в список добавляется наш новый модуль Analytics

А дальше уже может выполняться всё, что угодно, всё, что будет написано в коде самого модуля.

В данном случае в таблицу settings (пункт меню Админка - Settings - Store) добавляются две новые настройки: 

vamshop3-google-analytics.thumb.png.43e0

Web Property ID - Здесь указывается id номер счётчика.

Primary Domain - Название Вашего домена.

Указываете эти данные и у Вас начнёт собираться статистика в Google Analytics и Вы начнёте видеть отчёты.

В данном примере загрузка данных в базу и описание того, что надо добавлять идёт из /vendor/vamshop/analytics/config/PluginActivation.php

 

и напоследок ещё пару моментов про загрузку новых данных в базу.

В CakePHP 3 для этого используется так называемые миграции - https://book.cakephp.org/3.0/ru/migrations.html

т.е. напрямую SQL кода и SQL файлов в модулях быть не должно.

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

и через Seeds если нужно добавить данные в таблицы.

 

Пример описания для таблиц и данных для таблиц можно посмотреть в модуле Contacts.

В /vendor/vamshop/vamshop-core/Contacts/config/Migrations/ - это описание новых таблиц, которые будут добавлены в базу при установке модуля.

В /vendor/vamshop/vamshop-core/Contacts/config/Seeds/ - это описание данных, которые надо добавить в новые таблицы  при установке модуля.

Опять же, подробное описание доступно в документации - https://book.cakephp.org/3.0/ru/migrations.html

Миграции реализованы в полной мере в VamShop 3, все в соответствии с документацией.

 

Share this post


Link to post
Share on other sites
support

"Ручная" установка модуля Analytics - https://github.com/vamshop/analytics

 

Здесь всё как обычно, скачиваете архив с модулем analytics-master.zip - https://github.com/vamshop/analytics/archive/master.zip 

Содержимое папки analytics-master переписываете в папку в магазине /plugins/Analytics 

По умолчанию такой папки в магазине нет, надо самому создать папку Analytics внутри /plugins

Всё, переписали файлы, теперь, если папку назвали правильно и файлы переписали правильно, в Админке - Расширения - Модули появится в списке модуль Analytics и его можно будет активировать.

 

Возможно, возникнет вопрос, а чем же "ручная" установка хуже, ведь судя по количеству текста выше в данной теме и количеству действий, "ручная" установка гораздо проще чем установка через composer.

На самом деле нет, не проще, не удобнее и не быстрее.

 

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

Но по сути установка через composer быстрее и проще.

 

Давайте сравним, сколько кликов, движений надо сделать что б установить один и тот же модуль Analytics в VamShop используя composer и используя "ручной" способ.

 

Установка через composer:

1. Подключились на хостинг.

2. Установили модуль со всеми зависимыми пакетами командой composer require vamshop/analytics

3. Активировали модуль командой bin/cake ext activate plugin Analytics

Ручная установка:

1. Зашли на https://github.com/vamshop/analytics

2. Скачали архив к себе на комп https://github.com/vamshop/analytics/archive/master.zip

3. Распаковали файлы из архива у себя на компе.

4. Подключились к своему магазину.

5. Создали папку /plugins/Analytics

6. Переписали все файлы с компа на сервер.

7. Открыли браузер, авторизовались в админку.

8. Зашли в Админку - Расширения - Модули и активировали модуль Analytics.

 

И это ещё самый простой пример модуля Analytics, где нет связанных с ним пакетов.

А если будет модуль, к примеру, который будет использовать внешние библиотеки, например, html-редактор TinyMCE.

Ручная установка будет ещё дольше и ещё сложнее, т.к. придётся кроме загрузки самого модуля идти на сайт tinymce.com

Скачивать архив с TinyMCE, распаковывать, переписывать на сервер.

 

В общем, composer + cakephp + vamshop3 + github - уникальная вещь, которая экономит столько времени, что Вы себе даже представить не можете.

Это я сравниваю VamShop 1, VamShop 2 и VamShop 3.

Это просто небо и земля.

Минус лишь в том, что надо изначально потратить время и разобраться в основах, как всё работает.

Но именно для этого и я пишу свои заметки, что б прочитав их можно было понять идеи и смысл, которые заложены в интеграцию composer + cakephp + vamshop3 + github

 

 

Share this post


Link to post
Share on other sites
support

Вот ещё одно сравнение "автоматической" и "ручной" установки пакета в VamShop.

В данном случае пример установи перевода на русский язык:

Лично на мой взгляд, установка через composer намного быстрее и удобнее чем ручная возьня с файлами, архивами, загрузками и т.д.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now