xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

Сколько не пиши куда правильно класть модули, всегда найдутся юзвери, которые положат их в /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
Похожие записи

Комментарии RSS

Как всегда, коротко и толково!

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

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

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

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

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

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

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

кэш надо будет сбросить

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

нужно конечно

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

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

супер :)

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

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

Кирилл,

drush rr

http://drupal.org/project/registry_rebuild
Должно быть у каждого друпалера.

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

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

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании