Перейти к основному содержанию

Drupal — переместить модуль в папку contrib

Drupal 9

Я долго противился работе с composer в Drupal, но, деваться некуда. Де-факто без composer сейчас очень сложно работать с Drupal, хотя и можно.

Composer — это пакетный менеджер уровня приложений для PHP, который управляет зависимостями в PHP-приложении. Работает в командной строке.

После переезда с Windows на Linux с composer работать стало проще. В итоге у меня сложилась такая ситуация, часть старых модулей лежат в папке /modules, а новые уже размещены в /modules/contrib. И тут я столкнулся с неприятной ситуацией, чтобы перенести старый модуль в /modules/contrib, его предлагают сначала удалить, а потом установить через composer. Подождите, а как же настройки модуля и сами данные, они же при удалении сотрутся? Так не пойдёт! Переносим модуль в папку contrib без удаления данных.

Как раз подоспела пачка обновлений. Очень хочется обновить модуль PHP на версию 8.x-1.2.

drupal

Посмотрим где у нас этот модуль находится.

drupal

Модуль PHP лежит в папке /modules, будем переносить.

drupal

Обновлять модуль предлагается через composer:

composer require 'drupal/php:^1.2'

Подготовимся для начала, нам понадобится drush. Тоже пора переходить на администрирование сайта через командную строку.

Drush (от Drupal shell) — утилита с интерфейсом командной строки, созданная для управления и администрирования Drupal сайтов. Доступна как для Linux, так и для Windows.

Drush устанавливаем через composer. Переходим в корневую директорию Drupal сайта. Composer запускаем от имени пользователя, под которым работает web-сайт.

sudo -u www-data composer require --dev drush/drush
drupal

Обновляем наш модуль PHP:

sudo -u www-data composer require 'drupal/php:^1.2'
drupal

Смотрим что получилось. Теперь у нас есть и старый модуль PHP в папке /modules, и более новый в /modules/contrib

drupal

Старый модуль PHP из папки /modules удаляем (или переносим в другую папку подальше, вдруг, восстанавливать придётся).

drupal

Воспользуемся drush. При его работе есть тонкость, если ваш Drupal работает в режиме мультисайта, то выполнять его требуется из директории нужного сайта, он там читает конфиги для доступа к базе данных, иначе он не поймёт с чем ему работать. Переходим в директорию вашего сайта. Чистим кэш.

sudo -u www-data ../../vendor/bin/drush cr

Обновляем базу.

sudo -u www-data ../../vendor/bin/drush updb

Если ранее не обновляли модуль, то переходим в корневую папку и обновляем.

sudo -u www-data composer require 'drupal/php:^1.2'

Переходим в директорию вашего сайта. Чистим кэш.

sudo -u www-data ../../vendor/bin/drush cr

Можно, конечно, всё это и вручную провернуть, но очень муторно. Особенно, если модулей много.

drupal

Модуль PHP перенесён в папку /modules/contrib, его версия заодно обновлена.

Теги

 

Похожие материалы