Задайте имя сайта в профиле установки


Я пишу пользовательский профиль установки, и большинство вещей работают, за исключением того, что я не могу заставить его изменить имя сайта.

function myprofile_install() {
  include_once DRUPAL_ROOT . '/profiles/standard/standard.install';
    standard_install();

    // ...

    variable_set('site_name', st('My Site Name'));

    // ...
}

variable_set не имеет никакого эффекта. Поэтому я попытался добавить

$GLOBALS['config']['site_name'] = "My Site Name";

В конце функции, чтобы увидеть, получил ли он другой результат, но этого не произошло. Другие части моего профиля работают, поэтому я знаю, что он работает. Другие профили, похоже, могут использовать variable_set в своих hook_install, поэтому я не думаю, что это запрещено. Есть ли что-то еще, что мне нужно что делать, чтобы заставить переменные "принимать"?

Этот вопрос, похоже, указывает на то, что я делаю это правильно, как и этот и этот. Я перепроверил профили RTFM и образцы, чтобы узнать, есть ли какой-то шаг, который я пропускаю, но если он есть, я не могу его найти. Название этого вопроса выглядело многообещающим, но оказалось, что это не связанный с этим вопрос.

Если я добавлю оператор echo внутри myprofile_install, это указывает на то, что значение было установлено правильно (и что функция myprofile_install читается полностью), но когда я вхожу на сайт, у него есть имя по умолчанию "установка сайта".

Я создаю сайт с помощью команды drush, а не с помощью графического интерфейса:

drush -y si myprofile --db-url=mysql://###:###@localhost:8080/mysite username=### pass=### dbname=###

В ответ на комментарий @clive (спасибо!) я забыл упомянуть, что у меня также есть

function myprofile_form_install_configure_form_alter(&$form, $form_state) {
    if (!function_exists("system_form_install_configure_form_alter")) {
        function system_form_install_configure_form_alter(&$form, $form_state) {
            $form['site_information']['site_name']['#default_value'] = 'mysite';
        }
    }
 }

В файле .profile. Я предположил, что этот код вообще не вызывался, так как я не использовал форму графического интерфейса. Но если бы форма была невидимо колотящейся значения, которые я установил в файле .install, похоже, что он будет устанавливать значение mysite, а не site-install?

Author: kiamlaluno, 2015-05-20

2 answers

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

drush -y vset site_name "My Site"

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

Оставляю это здесь на случай, если это поможет кто-то, но не "принимающий" это, так как это обходной путь, а не ответ.

 0
Author: LindaJeanne, 2015-05-21 11:43:07

Для Drupal 8 вам необходимо выполнить следующую команду drush:

drush config-set system.site name 'Project X'
 0
Author: Leonard O' Sullivan, 2017-01-17 06:23:25