Ответ 1
Если вы переместите модуль, то Drupal увидит, что старый сломан, и существует новый. Он не предполагает, что два - одно и то же - просто перемещено.
Безопасно ли перемещать мои модули
на производственной площадке?
То есть, Drupal автоматически обнаруживает, что модуль все еще существует, но по новому пути?
Если вы переместите модуль, то Drupal увидит, что старый сломан, и существует новый. Он не предполагает, что два - одно и то же - просто перемещено.
Версии Drupal до D6 сохраняют расположение модулей в системной таблице, но начиная с D7 существует несколько мест, где записывается путь (например, таблицы реестра и реестра), поэтому просто перемещение папки и очистка кеша не сделают этого, большинство вероятно, приведет к значительным проблемам.
Последовательность шагов, которые вы можете попробовать:
Запустите следующие запросы:
Система UPDATE SET filename = REPLACE (имя файла, "сайты/все/модули" , "сайты/все/модули/вклад" );
Реестр UPDATE SET filename = REPLACE (имя файла, "сайты/все/модули" , "сайты/все/модули/вклад" );
UPDATE registry_file SET filename = REPLACE (имя файла, "сайты/все/модули" , "сайты/все/модули/вклад" )
Переместить папки
drush cc all
Ответ 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
, очистите кеш, и вам будет хорошо идти.
Drupal хранит расположение файла в системной таблице, информация будет восстановлена при очистке кеша модуля, поэтому, если вы перемещаете материал и затем очищаете кеш, вы должны быть в порядке.
Если вы находитесь на D7, то эта страница документации drupal - лучший способ продвинуть модули вокруг - Как перемещать модули и темы
Хорошо использовать /contrib и/custom подпапку для модулей. Для D7, особенно если вы используете сущность, вы должны отключить модули, переместить их и затем снова включить. Он работает.
Альтернативой, переместите модули в подпапки и очистите кеш, иногда не работает и может генерировать WSOD.
использовать http://drupal.org/project/registry_rebuild "Registry Rebuild также перестроит системную таблицу, чтобы получить модули в нужном месте, чтобы вы могли загрузиться".
На самом деле вам нужно только сделать обновление в системной таблице, а затем сделать следующее:
drush rr
и возможно..
drush cc all
drush rr
Не забудьте использовать этот модуль после изменения папки модулей:
Вы можете безопасно перемещать большинство модулей, если затем очистить кеш (drush cc all).
Однако некоторые модули, особенно ctools, сохраняют информацию о пути к файлу в местах, отличных от системной таблицы или кешей. Возможно, вам придется оставить эти модули в исходном местоположении, но вы все равно можете переместить все остальное.