Was ist der richtige Weg, um das aktive Drupal-Thema programmgesteuert zu ändern?
22
Drupal 6 Lösung:
Sie möchten sicherstellen, dass Sie die globale $custom_theme
Variable relativ früh in der Seitenausführung ändern .
global $custom_theme;
$custom_theme = 'garland';
$custom_theme
definiert reicht es zum themenwechsel?hook_custom_theme
api.drupal.org/api/drupal/modules%21system%21system.api.php/…Ich weiß, dass Sie gefragt haben, wie man das programmatisch macht, aber falls dies Ihre Lösung ist und nicht das eigentliche Problem, können Sie auch das ThemeKey-Modul verwenden . Auf diese Weise können Sie Bedingungen festlegen, bei deren Einhaltung das Thema geändert wird. Sie können Bedingungen basierend auf Pfaden, Taxonomie, Inhaltstyp, Erstellungsdatum oder Bearbeitungsdatum usw. festlegen. Sie können auch das Modul "Themekey Properties" hinzufügen , um noch mehr Optionen zu erhalten.
Wiederum weiß ich, dass dies nicht programmatisch ist, aber ich bin nicht sicher, ob die eigentliche Frage hinter Ihrer Frage ist, wie Themen basierend auf Bedingungen geändert werden können.
quelle
Am besten erstellen Sie dazu einen Update-Hook in einem Modul:
quelle
Ändern des aktiven Themas über Drush
Ändern des aktiven Themas über ein Modul
Die Grundlagen zum Ändern des Standarddesigns und des Verwaltungsthemas:
Hier ist eine kleine Funktion, um die Themen sicher auf Standard-Drupal-Themen wie Bartik oder Garland zurückzusetzen (getestet in Drupal 6 und 7):
Sie können es in einer Implementierung von hook_init () aufrufen ( kommentieren Sie es aus, wenn es nicht benötigt wird):
quelle
variable_set('theme_default','yourtheme');
In Drupal 7 verwenden Sie
hook_custom_theme()
:Angepasst von <emoticode />
Geben Sie den maschinenlesbaren Namen des Themas zurück, das für die aktuelle Seite verwendet werden soll.
Die Kommentare zu dieser Funktion können lesenswert sein:
quelle
Für Drupal 8:
In settings.php
Aktualisiere die Konfiguration programmatisch:
quelle