Задача: подключить пакетный менеджер composer, локально, к MODX 2ой версии. (Так как в 3ью он встроен по умолчанию)
Практически вся работа будет проводиться с командной строкой, по этому нам понадобятся доступы ssh.
Но начнем мы с кода, который в третьей версии MODX уже написан в файле index.php
Мы могли бы тоже его написать в файл index.php, но так делать не будем, и не рекомендуем.
Создаем плагин с событием OnMODXInit
В нём мы просто подключаем файл autoload.php при всех инициализациях объекта MODX. Короче везде.
switch ($modx->event->name) {
case 'OnMODXInit':
$file = MODX_CORE_PATH . 'vendor/autoload.php';
if (file_exists($file)) {
require_once $file;
}
break;
}
Теперь открываем консоль ssh и начинается магия.
Переходим к папке core нашего проекта.
Путь у каждого индивидуальный.
cd /var/www/user/data/www/domain/core/
Копируем установочный файл composer, он скачается в папку core
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Запускаем установочный файл composer-setup.php
В результате скачается файл composer.phar, он появится в папке core
php composer-setup.php
Удаляем установочный файл composer-setup.php
rm composer-setup.php
Создаем пустой файл composer.json, с ним в дальнейшем будет происходить вся работа, в нём будут перечисленны все пакеты которые вы хотите установить в MODX
echo "{}" > composer.json
Осталось только установить сам composer в MODX:
composer install
Отлично, теперь в вашем MODX установлен composer, а значит можно установить какой-нибудь пакет.
Пример установки пакета php-qrcode-detector-decoder
Переходим к папке core нашего проекта.
Путь у каждого индивидуальный.
cd /var/www/user/data/www/domain/core/
Устанавливаем пакет khanamiryan/qrcode-detector-decoder
Он загрузится в папку core/vendor
composer require khanamiryan/qrcode-detector-decoder
Если вам нужно игнорировать требования версии php, или другие требования пакета то можно установить с флагом --ignore-platform-reqs
Готово
Теперь в любом сниппете можно использовать пакет:
$qrcode=new Zxing\QrReader('./qr.png');
$text=$qrcode->text();
Тут не будет много слов, всё очень подробно описано здесь
После установки пакета, в файле composer.json появится соответствующая запись, например:
{
"require": {
"khanamiryan/qrcode-detector-decoder": "^2.0.2"
}
}
Если вам нужна другая версия пакета, просто меняйте цифры версии, сохраняйте файл и вводите в консоли команду:
composer update
Если вам нужно игнорировать требования версии php, или другие требования пакета то можно обновить с флагом --ignore-platform-reqs
composer update --ignore-platform-reqs