Ich habe eine Drupal-Instanz auf example.org. Welches hat ein Theme X installiert und aktiviert. Jetzt soll für eine begrenzte Zeit eine Veranstaltung auf dem Gelände stattfinden, für die ein besonderer Abschnitt "herausgearbeitet" wurde. Alle mit diesem Ereignis zusammenhängenden Informationen werden unter example.org/event2011 abgerufen.
Ich möchte, dass ein anderes Thema angezeigt wird, wenn eine Seite in diesem Abschnitt angezeigt wird (z. B. http://example.org/event2011/about , http://example.org/event2011/node/123 ). Wie mache ich das?
Ich habe viele Module durchlaufen, aber keines von ihnen unterstützt Drupal 7. Am liebsten würde ich es mit Modulen machen und möchte auf Codeebene nichts an mir selbst ändern.
Antworten:
In Anbetracht der Tatsache, dass die Änderung nur für einen begrenzten Zeitraum gültig ist und die Implementierung eines solchen Codes nicht schwierig ist, würde ich vorschlagen, ein benutzerdefiniertes Modul zu implementieren, das das Thema ändert, das für bestimmte Seiten verwendet wird.
Es reicht aus,
hook_custom_theme()
Folgendes zu implementieren :Wenn Sie das Design nur für http://example.com/event2011 , aber nicht für http://example.com/event2011/node/123 ändern müssen, sollte der Code in geändert werden
Zur Verwendung der Theme-Callbacks in der Definition eines Menü-Callbacks heißt es in der Dokumentation :
quelle
Eine benutzerdefinierte Lösung, wie sie in den anderen Kommentaren vorgeschlagen wird, ist wahrscheinlich die beste. Wenn Sie jedoch wirklich ein Modul verwenden möchten, ist ThemeKey die beste Wahl . Ab dem 23.05.11 gibt es eine stabile Version.
quelle
Alternativ können Sie die unten beschriebene neue
theme callback
Option des Menüsystems verwendenhook_menu_alter()
. ps Checkout hook_menu () für weitere Details zurtheme callback
Darüber hinaus gibt es auch ein Beispiel für die Verwendung der traditionelleren
hook_custom_theme()
Entnommen aus: http://drupal.org/node/224333#custom_theme
quelle
Sie können einfach Context verwenden und das Thema verwenden, um angewendet zu werden, wenn der Pfad / event2011 / lautet. Sie können einfach den Pfad in den Zustand von cotext setzen und das Thema in der Aktion des Inhalts ändern. Dies war Sie können sehr einfach zwischen Themen auf einer Website basierend auf URL wechseln. Funktioniert sogar für Handys;)
quelle
Die Verwendung von ThemeKey ist einfach und das bislang beliebteste und leistungsfähigste Modul (mit Unterstützung für 8.x) für Themenwechselregeln, die die automatische Auswahl eines Themas in Abhängigkeit von aktuellem Pfad, Taxonomiebegriffen, Sprache, Knotentyp und vielen anderen Kriterien ermöglichen. viele andere Eigenschaften. Es kann auch problemlos erweitert werden, um zusätzliche Eigenschaften zu unterstützen, die von anderen Modulen bereitgestellt werden. Neben den Standardfunktionen erweitert ThemeKey automatisch die Funktionen vieler Contrib-Module und lässt diese durch Module erweitern.
Verwendung (7.x)
Gehen Sie nach dem Aktivieren des Moduls zu
admin/config/user-interface/themekey
. Es gibt viele Optionen zum Wechseln des Themas, aber wahrscheinlich interessierenpath:node_alias
Sie sich dafür. Stellen Sie den Wert so ein, wie Sie möchten, wie Sie / my_url sagen, und wählen Sie dann das Thema aus, das Sie unter dieser URL aktivieren möchten. Sie können auch Platzhalter wieweb/*
oder verwenden/^web/.*
.Überprüfen Sie, wie ein Thema für Pfad geladen wird
Fortgeschrittene Nutzung
ThemeKey 7.x enthält ein optionales Modul namens ThemeKey Example, um Entwicklern die Erweiterung von ThemeKey zu demonstrieren.
Hilfe (7.x)
Schauen Sie sich das Video-Tutorial von Mustardseed (7.x) an.
Weitere Hilfe zu diesem Thema finden Sie unter
/admin/help/themekey
.Überprüfen Sie auch andere SE-Fragen im Zusammenhang mit themekey .
Alternativ gibt es auch Switchtheme (7.x), das einen Block hinzufügt, mit dem Benutzer zwischen aktivierten Themen wechseln können.
quelle
Beachten Sie bei der Verwendung von URL-Aliasnamen oder des Pathauto-Moduls die Feinheiten und Unterschiede bei der Verwendung von Komponenten des aktuellen Drupal-Pfads.
Es gibt Situationen, in denen Sie arg () möglicherweise nicht verwenden möchten . Tatsächlich wird in der Drupal-API-Dokumentation empfohlen, die Verwendung dieser Funktion nach Möglichkeit zu vermeiden, da der resultierende Code schwer zu lesen ist.
Betrachten Sie das folgende Beispiel, wie es von kiamlaluno vorgeschlagen wurde :
In Drupal 7, wenn ein Knoten eine Alias von event2011 , indem
arg(0)
kehrtnode
als erste URL - Komponente, wie an den Alias entgegengesetzt.Stattdessen, wenn Sie mit einem Aliasnamen arbeiten müssen gibt es mehr Möglichkeiten , die aktuelle URL in Drupal zu bekommen , einschließlich
menu_get_object()
,current_path()
,request_path()
und andere.Hier ist ein überarbeitetes Beispiel, das einen Alias als Auslöser für das Wechseln des Themas verwendet:
quelle
So wechseln Sie das Thema je nach Benutzerrolle:
Erstellen Sie ein benutzerdefiniertes Modul und kopieren und fügen Sie Folgendes ein:
Sie müssen ersetzen:
mymodule
=> mit deinem ModulnamenMeine spezielle Rolle => mit dem Namen der Rolle, die Ihre Benutzer benötigen, damit sie ein anderes Thema sehen können.
mytheme
=> mit dem Namen des Themas, zu dem Sie wechseln möchtenquelle
Sie können das Seiten-Design- Modul verwenden, um genau das zu erreichen
quelle
Mit dem Seiten- Design-Modul können Sie genau das erreichen: Das Seiten-Design-Modul ist ein einfaches und benutzerfreundliches Modul, mit dem auf bestimmten Seiten andere Designs als die Standard-Website verwendet werden können.
Eigenschaften :
Weisen Sie einer einzelnen Seite oder Liste von Seiten ein Thema zu. (Legen Sie eine Seite als Drupal-Pfad fest.) Ermöglichen Sie die Verwendung des Zeichens '*' als Platzhalter in Drupal-Pfaden. Gestatten, Themen zu ordnen. (Wenn mehrere Seiten definiert sind, wird das erste Thema in der Liste verwendet.) Ermöglicht das Aktivieren / Deaktivieren eines Themas. Drupal-Neuling freundlich.
Wie gewünscht, wie Sie es verwenden können: Abschnitte, die die meisten Funktionen des Seitenthemas aufweisen, jedoch eine rollenbasierte Auswahl und einen "PHP-Snippet" -Bereich zur Auswahl des Themas hinzufügen.
Wenn Sie jedoch beim Erstellen, Bearbeiten und Anzeigen von Seiten andere Themen als die Standard-Website verwenden möchten, können Sie das Inhalts-Design verwenden , mit dem beim Erstellen, Bearbeiten und Anzeigen von Seiten andere Themen als die Standard-Website verwendet werden können.
quelle