Drupal - папка движущегося модуля

Безопасно ли перемещать мои модули

  • От сайтов/все/модули/
  • К сайтам/всем/modules/contrib и сайтам/всем/модулям/обычаю

на производственной площадке?

То есть, Drupal автоматически обнаруживает, что модуль все еще существует, но по новому пути?

Ответы

Ответ 1

Если вы переместите модуль, то Drupal увидит, что старый сломан, и существует новый. Он не предполагает, что два - одно и то же - просто перемещено.

Ответ 2

Версии Drupal до D6 сохраняют расположение модулей в системной таблице, но начиная с D7 существует несколько мест, где записывается путь (например, таблицы реестра и реестра), поэтому просто перемещение папки и очистка кеша не сделают этого, большинство вероятно, приведет к значительным проблемам.

Последовательность шагов, которые вы можете попробовать:

  • Резервное копирование базы данных
  • Завершите свой код в управление версиями
  • Запустите следующие запросы:

    Система UPDATE SET filename = REPLACE (имя файла, "сайты/все/модули" , "сайты/все/модули/вклад" );

    Реестр UPDATE SET filename = REPLACE (имя файла, "сайты/все/модули" , "сайты/все/модули/вклад" );

    UPDATE registry_file SET filename = REPLACE (имя файла, "сайты/все/модули" , "сайты/все/модули/вклад" )

  • Переместить папки

  • Запуск: drush cc all

Ответ 3

Ответ irakli работал хорошо для меня, но я хотел добавить дополнительную сложность в запросы, если другие считают их полезными.

Шаг 1 - обновите все "настраиваемые" модули, если вам посчастливилось поделиться им с пространством имен:

UPDATE system SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/custom') WHERE name LIKE 'custom_namespace_%';
UPDATE registry SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/custom') WHERE name LIKE 'custom_namespace_%';
UPDATE registry_file SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/custom') WHERE filename LIKE '%custom_namespace_%';

Шаг 2 - Обновите все модули 'dev':

UPDATE system SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/dev') WHERE name LIKE 'devel%';
UPDATE registry SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/dev') WHERE name LIKE 'devel%';
UPDATE registry_file SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/dev') WHERE filename LIKE '%devel%';

Шаг 3 - Обновите модули 'contrib':

UPDATE system SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib');
UPDATE registry SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib');
UPDATE registry_file SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib')

Затем бросьте все ваши модули в соответствующие папки sites/all/modules/contrib|custom|dev, очистите кеш, и вам будет хорошо идти.

Ответ 4

Drupal хранит расположение файла в системной таблице, информация будет восстановлена ​​при очистке кеша модуля, поэтому, если вы перемещаете материал и затем очищаете кеш, вы должны быть в порядке.

Ответ 6

Хорошо использовать /contrib и/custom подпапку для модулей. Для D7, особенно если вы используете сущность, вы должны отключить модули, переместить их и затем снова включить. Он работает.

Альтернативой, переместите модули в подпапки и очистите кеш, иногда не работает и может генерировать WSOD.

Ответ 7

использовать http://drupal.org/project/registry_rebuild "Registry Rebuild также перестроит системную таблицу, чтобы получить модули в нужном месте, чтобы вы могли загрузиться".

  • резервное копирование db
  • загружен модуль '
  • переместил все модули
  • запустите script сайты/все/modules/registry_rebuild/registry_rebuild.php
  • перезагрузите сайт
  • если вы получите сообщение об ошибке, очистите кеш браузера, и все снова работает.

Ответ 8

На самом деле вам нужно только сделать обновление в системной таблице, а затем сделать следующее:

drush rr

и возможно..

drush cc all

drush rr

Ответ 10

Вы можете безопасно перемещать большинство модулей, если затем очистить кеш (drush cc all).

Однако некоторые модули, особенно ctools, сохраняют информацию о пути к файлу в местах, отличных от системной таблицы или кешей. Возможно, вам придется оставить эти модули в исходном местоположении, но вы все равно можете переместить все остальное.