«Заморозка» версий установленных модулей в Drupal

Иногда требуется зафиксировать конкретную версию установленного модуля. К примеру, есть некая версия некоего модуля, к которой есть некий патч, который не подходит к более новым версиям данного модуля. В данном случае как раз нам и пригодится «заморозка» установленного модуля, чтобы он не перезаписался при обновлении.

Внимание: Данная информация актуальная для CMS Drupal версии 7.

В случае с обновлением через веб достаточно установить модуль Disable Updates и выставить настройки в параметрах модуля путём расстановки необходимых чекбоксов, как на приведённом ниже скриншоте (изображение с официальной страницы модуля):

disable_updates

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

где вместо <module> подставьте название модуля, который необходимо «заморозить», а вместо <lock message> — комментарий к «заморозке» (данный параметр необязателен). К примеру, необходимо запретить обновление модуля date с комментарием «Temporary disabled at 13.06.2016». Для этого необходимо выполнить следующую команду:

После выполнения данной команды в папке с указанным модулем создастся файл с названием .drush-lock-update, в котором будет указан текст вашего комментария «заморозки» (если вы не укажете данный параметр, то создастся стандартный комментарий). Всё, после ввода данной команды при обновлении через drush данные модули обновляться не будут.

Внимание: «заморозка» при помощи модуля Disable Updates не распространяется на обновление при помощи Drush и наоборот. Т.е. если вы обновляете и через веб-интерфейс, и через Drush — то «заморозку» модулей нужно производить в обоих вариантах, что несколько неудобно. Поэтому рекомендуется использовать один метод обновлений — конечно же при помощи Drush. 🙂

Для снятия «заморозки» достаточно выполнить команду в таком формате:

Т.е. для снятия «заморозки» с модуля date нужно выполнить следующее:

Или же можно просто удалить из папки с модулем файл .drush-lock-update.

Также можно через запятую указывать более одного модуля для «заморозки» (или снятия «заморозки»). Например, нужно «заморозить» модули date и entity. Для этого необходимо выполнить следующее (заодно напомню вам сокращённую запись, вместо команды длинной команды pm-updatestatus можно писать просто up):

«Разморозка» производится по аналогии с вышеописанным примером:

На этом всё, надеюсь, данная информация будет вам полезной.

String offset cast notice in field_invoke_method_multiple()

Если возникает ошибка _field_invoke_multiple() /modules/field/field.attach.inc, нужно пропатчить ядро. Способ не совсем правильный, но другого пока что не придумали (данный способ ожидает включение в ядро на сегодняшний день уже более двух лет).

Исправить нужно строку

на

или воспользоваться прикреплённым патчем.

Загрузить патч

Ветка обсуждения на Drupal.org.

Полезные сайты, посвящённые Drupal

Ниже указаны полезные сайты, посвящённые CMS/CMF Drupal (в основной последней стабильной версии 7).

Чтобы не обижать никого из авторов блога, список ведётся в вольном порядке, без учёта «полезности» и авторитета, по мере вспоминания. Все блоги очень интересные и крайне познавательные, рекомендую к ознакомлению.