Как отключить основной профиль установки?


Существует проблема Разрешить удаление профилей установки , которая не позволяет удалять профили установки. Есть ли какой-нибудь способ сделать это в D7? (При необходимости приложив немного больше усилий.)

При установке D7 обычно необходимо выбрать профиль установки; это может быть "стандартный" профиль, поставляемый с ядром Drupal. После установки профиль установки будет находиться в таблице "система" вечно, без очевидного способа отключения это.

Есть ли еще какой-нибудь хакерский способ отключить профиль установки.

Чтобы еще больше согласовать вопрос с принятым ответом, я расширяю вопрос следующим образом: если профиль установки нельзя или не следует отключать, то можно ли его заменить по крайней мере?

Author: kiamlaluno, 2013-09-01

4 answers

В Drupal 7, профиль установки похож на модуль , но особый, с двумя основными исключениями:

  • Любой модуль, требуемый профилем установки, может быть отключен - как вы обнаружили - за исключением модулей, требуемых ядром drupal (поле, фильтр, узел, система, пользователь). Смотрите функцию module_disable() для получения подробной информации, где зависимость от профиля установки явно отбрасывается.
  • Профиль, используемый для установки сайта, также является обязательным модулем. Это жестко закодировано в drupal_required_modules().

Таким образом, профиль нельзя удалить, потому что он является обязательным модулем.

Вы можете установить статус 0 в системной таблице, но не должны, так как:

  • Drupal ожидает, что профиль установки будет включен, и полагается на это для некоторых операций, если они критичны afaik.
  • это модуль, он может реализовать любой хук (в своем файле .profile) или объявить любую функцию, требуемую подмодулем профиля. Отключение его трудный путь может привести к неправильной работе или фатальной ошибке php в этих сценариях.

Кстати, профиль установки, используемый для установки сайта, хранится в переменной install_profile

# drush vget install_profile
install_profile: 'minimal'

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

 9
Author: jonhattan, 2013-09-06 17:27:59

Модуль переключения профилей для D7 может помочь: https://www.drupal.org/project/profile_switcher

 2
Author: Dave Nattriss, 2015-05-11 02:40:42

Модуль Habitat - это ваш вариант, и я не использую его раньше. Указанные модули включаются и отключаются в зависимости от переменной, заданной в settings.php

Он предоставляет настройки для включения или отключения определенных модулей на каждом окружающая среда (среда обитания). Просто установите переменную, например, с помощью $conf['среда обитания'] = "местный"; в вашем settings.php файл (фактическая переменная для использования там настраивается для вашего текущего рабочего процесса). Отключение/включение модули выполняются на hook_init.

хук_инит.

enter image description here

 1
Author: Bala, 2013-09-06 18:49:38

Следующий запрос установит статус профиля установки равным 0 (отключен).

UPDATE `system` SET `status` = '0' WHERE `filename` = 'profiles/YOURPROFILE/YOURPROFILE.profile';

Или

UPDATE `system` SET `status` = '0' WHERE `type` = 'module' AND `name` = 'YOURPROFILE';

Или в сценарии обновления:

function YOUR_MODULE_update_7100(&$sandbox) {
  db_update('system')
    ->fields(array('status' => 0))
    ->condition('type', 'module')
    ->condition('name', 'YOURPROFILE')
    ->execute();
}
 1
Author: Елин Й., 2019-02-18 15:45:14