Chcę ustawić stronę główną Drupal programowo w czasie wykonywania.
W jaki sposób mogę to zrobić? czy to możliwe?
22
Możesz variable_set()
do tego użyć .
variable_set('site_frontpage', $value);
hook_install
albohook_update_N
czym powinno być dobrze.Istnieje moduł ( Frontpage , który utrzymałem), który pozwala ustawić inną stronę główną dla użytkowników anonimowych i użytkowników uwierzytelnionych. Moduł umożliwia modułom zewnętrznym modyfikowanie strony, do której przekierowywani są użytkownicy, lub modyfikowanie tablicy struktury używanej do renderowania strony. Moduły innych firm mogą zmieniać adres URL przekierowania tylko wtedy, gdy strona główna anonimowego lub uwierzytelnionego nie została ustawiona w module Frontpage lub gdy wystąpił błąd podczas ładowania węzła; moduł prawdopodobnie zostanie zmieniony w przyszłości, aby umożliwić modułom zewnętrznym przekierowywanie użytkowników na wybraną stronę.
Alternatywnie możesz utworzyć niestandardowy moduł, który za pomocą kodu podobnego do tego używanego przez Frontpage przekierowuje użytkowników na określoną stronę w oparciu o określone kryteria.
Moduł powinien zaimplementować hook_menu () i powiązać wywołanie zwrotne menu na przykład z http://example.com/frontpage ; wywołanie zwrotne strony tego elementu menu powinno po prostu zweryfikować, czy warunek jest zweryfikowany, a następnie przekierować użytkowników do określonego adresu URL.
Szkielet kodu może być podobny do następującego:
źródło
Bardzo elastycznym rozwiązaniem byłoby użycie paneli . Różne wyświetlacze mogą być prezentowane w oparciu o dowolne kryteria i są kontrolowane przez interfejs użytkownika.
źródło
Naprawiłem tak:
źródło
hook_page_alter
i używadrupal_is_front_page
do przekierowywania użytkowników, używającdrupal_goto
, w oparciu o pewne warunki (w tym przypadku $ user-> uid nie powinien wynosić 0)Zasady moduł może być stosowany również do ustawienia FrontPage „programowo”.
Właściwie tworzona reguła byłaby odmianą odpowiedzi w Przekieruj zalogowanych (uwierzytelnionych) użytkowników na inną stronę główną za pomocą reguł lub kodu php .
Opcjonalnie połączenie go z modułem Flag może jeszcze bardziej poprawić wrażenia użytkownika. Np. Dla zalogowanych użytkowników, aby wskazać, które z możliwych stron internetowych uważają za „ulubione”.
źródło
Jeśli chcesz programowo ustawić to globalnie, możesz ustawić zmienną w settings.php:
źródło
Zmieniłem węzeł strony głównej (w subdomenach), ustawiając zmienną w hook_url_outbound_alter ()
A następnie przekierowanie:
źródło