Drupal → Как перенести контриб модули в другую папку

30.09.2011

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

Для Drupal 6 есть два способа перенести модули из одной папки в другую.

Способ 1

  1. Выключить все контриб модули.
  2. Перенести папки модулей.
  3. Включить нужные контриб модули.

Способ 2

  1. Переместить папки модулей.
  2. Создать в корне друпала файл update-path.php с содержимым:
    <?php
    define('DRUPAL_ROOT', getcwd());
    require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
    
    $old_path = 'modules'; // старый путь
    $new_path = 'sites/all/modules'; // новый путь
    
    $modules = scandir(DRUPAL_ROOT . '/' . $new_path);
    foreach ($modules as $module) {
      if ($module == '.' || $module == '..') {
        continue;
      }
      
      db_query("
        UPDATE {system}
        SET filename = REPLACE(filename, '$old_path/$module/', '$new_path/$module/')
        WHERE filename LIKE '$old_path/$module/%'
      ");
      
      echo 'Path for ' . $module . ' updated<br />';
    }
    
    drupal_flush_all_caches();
  3. Открыть в браузере http://your-domain/update-path.php
  4. Удалить файл update-path.php.

Для Drupal 7 достаточно перенести папки модулей и очистить кэш.

Написанное актуально для
Drupal 6, Drupal 7
Похожие записи

Комментарии

Выключить все контриб модули. 1

Наверно не выключить, а деинсталлировать?

Как на счёт 7-ки?

если деинсталлировать, то пропадут все данные

Как на счёт 7-ки?

обновил код под семёрку

А как насчёт реестра классов? Он обновится по второму способу?

для 7-ки никаких запростов к базе не нужно (я не права?)

_system_rebuild_module_data() не сделает это сам? (ты вызываешь неявно через drupal_flush_all_caches())

Протестила, вызова registry_rebuild() достаточно, чтобы всё обновилось. а ты его вызываешь с помощью drupal_flush_all_caches().

а подскажите, как перенести тему оформления из папки themes/ в нужную. Делал по этому же принципу - не сработало.

Кирилл
26.04.2013, 14:39

Для 7 не всё так просто. Основную массу модулей перенёс (из sites/домен.ru/modules в sites/all/modules) без проблем, но entity, rules и views_slideshow не получается - сайт перестаёт отвечать. Подскажите, пожалуйста, как решить этот вопрос без выключения-включения модулей.

Кирилл
15.05.2013, 13:14

kalabro - не со всеми модулями. Rules и Entity не получается так просто перенести.

У меня получалось только c "rr" и "cc all". Возможно, у меня были какие-то особенные Rules и Entity. В любом случае всегда можно выключить и включить проблемные модули.

Добавить комментарий