Задайте имя сайта в профиле установки
Я пишу пользовательский профиль установки, и большинство вещей работают, за исключением того, что я не могу заставить его изменить имя сайта.
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
?
2 answers
Обходной путь, который я сейчас использую (потому что мне действительно нужно двигаться дальше и выполнять другие задачи), заключается в добавлении
drush -y vset site_name "My Site"
Вызовите скрипт bash, который я использую для создания базы данных mysql, и запустите установку. Не элегантное решение (и оно обходит локализацию, но это пока не проблема, так как сайт в настоящее время работает только на одном языке), но на данный момент оно выполняет свою работу, чтобы я мог заставить работать другие вещи.
Оставляю это здесь на случай, если это поможет кто-то, но не "принимающий" это, так как это обходной путь, а не ответ.
Для Drupal 8 вам необходимо выполнить следующую команду drush:
drush config-set system.site name 'Project X'