Jaki jest prawidłowy sposób programowej zmiany aktywnego motywu Drupal?
22
Rozwiązanie Drupal 6:
Chcesz się upewnić, że $custom_theme
zmienna globalna została zmieniona dość wcześnie na początku strony.
global $custom_theme;
$custom_theme = 'garland';
$custom_theme
zdefiniowane? czy wystarczy zmienić motyw?hook_custom_theme
api.drupal.org/api/drupal/modules%21system%21system.api.php/…Wiem, że zapytałeś, jak to zrobić programowo, ale jeśli to twoje rozwiązanie, a nie faktyczny problem, możesz również użyć modułu ThemeKey . Pozwala to ustawić warunki, które po spełnieniu zmienią motyw. Możesz tworzyć warunki na podstawie ścieżek, systematyki, typu zawartości, tworzyć lub edytować datę i więcej. Możesz również dodać moduł modułu Themekey Properties , aby uzyskać jeszcze więcej opcji.
Znów wiem, że nie jest to programowo, ale nie jestem pewien, czy prawdziwym pytaniem jest pytanie, jak zmieniać motywy w zależności od warunków.
źródło
Najlepszym sposobem na to jest utworzenie haka aktualizacji w module:
źródło
Zmiana aktywnego motywu za pośrednictwem Drush
Zmiana aktywnego motywu za pomocą modułu
Podstawy zmiany domyślnego motywu i motywu administracyjnego:
Oto mała funkcja bezpiecznego przywracania motywów do domyślnych motywów Drupal, takich jak Bartik lub Garland (testowane w Drupal 6 i 7):
Możesz go wywołać w implementacji hook_init () (skomentuj go, gdy nie będzie potrzebny):
źródło
variable_set('theme_default','yourtheme');
W Drupal 7 użyj
hook_custom_theme()
:Zaadaptowano z <emoticode />
Zwraca odczytywalną maszynowo nazwę motywu, który będzie używany dla bieżącej strony.
Warto przeczytać komentarze do tej funkcji:
źródło
W przypadku Drupal 8:
W settings.php
Aktualizuj programowo konfigurację:
źródło