Ich möchte die Drupal-Startseite zur Laufzeit programmgesteuert festlegen.
Wie kann ich das machen? Ist das möglich?
22
Sie können dafür verwenden variable_set()
.
variable_set('site_frontpage', $value);
hook_install
oderhook_update_N
dann sollte in Ordnung sein.Es gibt ein Modul ( Frontpage , das ich gepflegt habe), mit dem Sie eine andere Frontpage für anonyme Benutzer und authentifizierte Benutzer einrichten können. Das Modul ermöglicht es Modulen von Drittanbietern, die Seite zu ändern, zu der die Benutzer umgeleitet werden, oder das Strukturarray zu ändern, das zum Rendern der Seite verwendet wird. Module von Drittanbietern dürfen die Umleitungs-URL nur ändern, wenn die Startseite für anonym oder authentifiziert im Frontpage-Modul nicht festgelegt wurde oder wenn beim Laden des Knotens ein Fehler aufgetreten ist. Das Modul wird wahrscheinlich in Zukunft geändert, damit Module von Drittanbietern die Benutzer zu einer bestimmten von ihnen ausgewählten Seite umleiten können.
Alternativ können Sie ein benutzerdefiniertes Modul erstellen, das mit einem Code ähnlich dem von Frontpage verwendeten Code Benutzer auf eine bestimmte Seite umleitet, wobei bestimmte Kriterien zugrunde gelegt werden.
Das Modul sollte hook_menu () implementieren und einen Menü-Callback beispielsweise mit http://example.com/frontpage verknüpfen . Der Seitenrückruf dieses Menüelements sollte einfach überprüfen, ob eine Bedingung überprüft wurde, und die Benutzer dann zu einer bestimmten URL umleiten.
Das Code-Gerüst könnte etwa so aussehen:
quelle
Eine sehr flexible Lösung wäre die Verwendung von Panels . Verschiedene Anzeigen können basierend auf beliebigen Kriterien dargestellt und über eine Benutzeroberfläche gesteuert werden.
quelle
Das habe ich so behoben:
quelle
hook_page_alter
und verwendet werden solltedrupal_is_front_page
, um Benutzer umzuleiten, unter Verwendung vondrupal_goto
(in diesem Fall sollte $ user-> uid nicht 0 sein)Das Modul Regeln kann auch verwendet werden, um die Startseite "programmgesteuert" einzustellen.
Die tatsächlich zu erstellende Regel wäre eine Variation der bei Redirect angemeldeten (authentifizierten) Benutzer auf eine andere Startseite mittels Regeln oder PHP-Code .
Wenn Sie es optional mit dem Flag- Modul kombinieren , wird die Benutzerfreundlichkeit möglicherweise weiter verbessert. ZB für eingeloggte Benutzer, um anzugeben, welche der möglichen Frontpages sie als "Favorit" betrachten.
quelle
Wenn Sie dies global programmgesteuert festlegen möchten, können Sie die Variable in settings.php festlegen:
quelle
Ich habe den Homepage-Knoten (auf Subdomains) geändert, indem ich die Variable in a gesetzt habe hook_url_outbound_alter () gesetzt habe.
Und dann umleiten:
quelle