Как правильно изменить активную тему Drupal программно?
22
Drupal 6 решение:
Вы хотите убедиться, что вы изменили глобальную $custom_theme
переменную довольно рано при выполнении страницы.
global $custom_theme;
$custom_theme = 'garland';
$custom_theme
определяется? достаточно ли этого для смены темы?hook_custom_theme
упомяните api.drupal.org/api/drupal/modules%21system%21system.api.php/…Я знаю, что вы спросили, как это сделать программно, но если это ваше решение, а не реальная проблема, вы также можете использовать модуль ThemeKey . Это позволяет вам устанавливать условия, которые, при соблюдении, меняют тему. Вы можете создавать условия, основанные на путях, таксономии, типе контента, дате создания или редактирования и многом другом. Вы также можете добавить в модуль модуля Themekey Properties, чтобы получить еще больше возможностей.
Опять же, я знаю, что это не программно, но я не уверен, что реальный вопрос, стоящий за вашим вопросом, заключается в том, как менять темы в зависимости от условий.
источник
Лучший способ сделать это - создать хук обновления в модуле:
источник
Смена активной темы через Drush
Смена активной темы через модуль
Основы изменения темы по умолчанию и темы администрирования:
Вот небольшая функция для безопасного возврата тем к темам по умолчанию на Drupal, таким как Bartik или Garland (протестировано в Drupal 6 и 7):
Вы можете вызвать это в реализации hook_init () (закомментируйте, когда это не нужно):
источник
variable_set('theme_default','yourtheme');
В Drupal 7 используйте
hook_custom_theme()
:Адаптировано из <emoticode />
Возвратите машиночитаемое имя темы для использования на текущей странице.
Возможно, стоит прочитать комментарии к этой функции:
источник
Для Drupal 8:
В settings.php
Обновите конфигурацию программно:
источник