Подключение composer к модикс v 2.* [MODX]

21 Декабря 2024
ssh

Задача: подключить пакетный менеджер composer, локально, к MODX 2ой версии. (Так как в 3ью он встроен по умолчанию)

Часть 1: Установка composer в MODX

Практически вся работа будет проводиться с командной строкой, по этому нам понадобятся доступы ssh.

Но начнем мы с кода, который в третьей версии MODX уже написан в файле index.php

Мы могли бы тоже его написать в файл index.php, но так делать не будем, и не рекомендуем.

  1. Создаем плагин с событием 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;
    }
    
  2. Теперь открываем консоль ssh и начинается магия.

    Переходим к папке core нашего проекта.

    Путь у каждого индивидуальный.

    cd /var/www/user/data/www/domain/core/
    
  3. Копируем установочный файл composer, он скачается в папку core

    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    
  4. Запускаем установочный файл composer-setup.php

    В результате скачается файл composer.phar, он появится в папке core

    php composer-setup.php
    
  5. Удаляем установочный файл composer-setup.php

    rm composer-setup.php
    
  6. Создаем пустой файл composer.json, с ним в дальнейшем будет происходить вся работа, в нём будут перечисленны все пакеты которые вы хотите установить в MODX

    echo "{}" > composer.json
    
  7. Осталось только установить сам composer в MODX:

    composer install
    

Отлично, теперь в вашем MODX установлен composer, а значит можно установить какой-нибудь пакет.

Часть 2: Установка пакета через composer в MODX

Пример установки пакета php-qrcode-detector-decoder

  1. Переходим к папке core нашего проекта.

    Путь у каждого индивидуальный.

    cd /var/www/user/data/www/domain/core/
    
  2. Устанавливаем пакет khanamiryan/qrcode-detector-decoder

    Он загрузится в папку core/vendor

    composer require khanamiryan/qrcode-detector-decoder
    

    Если вам нужно игнорировать требования версии php, или другие требования пакета то можно установить с флагом --ignore-platform-reqs

  3. Готово

    Теперь в любом сниппете можно использовать пакет:

    $qrcode=new Zxing\QrReader('./qr.png');
    $text=$qrcode->text();
    

Часть 3: Работа с файлом composer.json

Тут не будет много слов, всё очень подробно описано здесь

После установки пакета, в файле composer.json появится соответствующая запись, например:

{
    "require": {
        "khanamiryan/qrcode-detector-decoder": "^2.0.2"
    }
}

Если вам нужна другая версия пакета, просто меняйте цифры версии, сохраняйте файл и вводите в консоли команду:

composer update

Если вам нужно игнорировать требования версии php, или другие требования пакета то можно обновить с флагом --ignore-platform-reqs

composer update --ignore-platform-reqs