Авторизация  
VaM

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

Рекомендуемые сообщения

VaM

Всё, о чём я расскажу в данной заметке, в принципе, описано в документации к 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.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
VaM

Как происходит установка модулей в 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, и выводят в админке.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
VaM

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

Опять же, принципе все описаны в документации - 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, все в соответствии с документацией.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
VaM

"Ручная" установка модуля 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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
VaM

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация