Как определить параметры из профиля установки
Я ищу способ установить некоторые настройки на этапе установки.
function genius_profile_final() {
// Enable default permissions for system roles.
$filtered_html_permission = filter_permission_name($filtered_html_format);
user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array('access content', 'access comments', $filtered_html_permission));
user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array('access content', 'access comments', 'post comments', 'skip comment approval', $filtered_html_permission));
// Create a default role for site administrators, with all available permissions assigned.
$admin_role = new stdClass();
$admin_role->name = 'administrator';
$admin_role->weight = 2;
user_role_save($admin_role);
user_role_grant_permissions($admin_role->rid, array_keys(module_invoke_all('permission')));
// Set this as the administrator role.
variable_set('user_admin_role', $admin_role->rid);
// Assign user 1 the "administrator" role.
db_insert('users_roles')
->fields(array('uid' => 1, 'rid' => $admin_role->rid))
->execute();
// Create a role for webmaster
$webmaster_role = new stdClass();
$webmaster_role->name = 'webmaster';
$webmaster_role->weight = 3;
user_role_save($webmaster_role);
user_role_grant_permissions($webmaster_role->rid, array_keys(module_invoke_all('permission')));
variable_set('taxonomy_menu_vocab_menu_rubric', 'menu-genius-navigation-menu');
variable_set('taxonomy_menu_vocab_parent_rubric', 0);
menu_rebuild();
// Set the regional settings First day to Monday
variable_set('date_first_day', 1);
// The return message is optional, if you omit it the default will be used.
return '<p>'. (drupal_set_message() ? t('Please review the messages above before continuing on to <a href="@url">your new Profile Name site</a>.', array('@url' => url(''))) : t('You may now visit <a href="@url">your new Profile Name site</a>.', array('@url' => url('')))) .'</p>';
}
В genius_profile_final()
, где, как я понял, Drupal полностью загружен, у меня есть variable_set('date_first_day', 1)
, но первый день недели по-прежнему установлен на Воскресенье, после установки. Так что это работает не так, как я ожидал.
Я использую модуль taxonomy_menu, и я хотел бы установить на этапе установки меню, которое будет связано с таксономией. Поскольку я устанавливаю что-то известное, я знайте, что имена переменных, которые могут быть установлены, следующие:
variable_set('taxonomy_menu_vocab_menu_rubric', 'menu-genius-navigation-menu');
variable_set('taxonomy_menu_vocab_parent_rubric', 0);
Это тоже не работает.
Я следил за https://www.drupal.org/node/1022020 и глядя на другие примеры, но мне не повезло найти, как это сделать.
Можно ли изменить настройки в профиле установки или существуют какие-либо ограничения? В таком случае, какие существуют ограничения?
Что я делаю не так?
4 answers
Я не могу найти крючок с именем hook_profile_final на drupal.org . Я также не вижу, где вы его нашли по ссылке, которую используете (https://www.drupal.org/node/1022020 ). Вы используете устаревшую версию учебника (https://www.drupal.org/node/67921).
Вам необходимо реализовать функцию hook_install_tasks_alter https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_install_tasks_alter/7 и измените задачу или измените форму страница конфигурации.
Другим решением было бы установить переменные и другие параметры в hook_install() в файле profile.install. Я делаю это в разных профилях установки, чтобы задать тему администратора, роли пользователей, настройки даты и настройки для модулей contrib.
Самый простой способ - использовать модуль profile_builder и подтвердить переменную box! Рекомендуется: https://www.drupal.org/project/profiler_builder
Пожалуйста, убедитесь, что все зарегистрировано, позвонив
drupal_flush_all_caches();
В конце профиля. Это поможет получить все данные, которые вы сохранили на заключительном этапе.
Пожалуйста, посмотрите на номер строки includes/install.core.inc с 1561 по 1564 следующее поможет вам,
// Flush all caches to ensure that any full bootstraps during the installer
// do not leave stale cached data, and that any content types or other items
// registered by the installation profile are registered correctly.
drupal_flush_all_caches();