Я хочу установить главную страницу Drupal программно во время выполнения.
Как я могу это сделать? Это возможно?
22
Вы можете использовать variable_set()
для этого.
variable_set('site_frontpage', $value);
hook_install
илиhook_update_N
тогда должно быть хорошо.Существует модуль ( Frontpage , который я поддерживал), который позволяет устанавливать разные титульные страницы для анонимных пользователей и аутентифицированных пользователей. Модуль позволяет сторонним модулям изменять страницу, на которую вместо этого перенаправляются пользователи, или изменять структурный массив, используемый для отображения страницы. Сторонним модулям разрешается изменять URL-адрес перенаправления только в том случае, если в модуле Frontpage не была задана титульная страница для анонимного или аутентифицированного или когда произошла ошибка во время загрузки узла; модуль, вероятно, будет изменен в будущем, чтобы сторонние модули могли перенаправлять пользователей на определенную страницу, которую они выбирают.
В качестве альтернативы вы можете создать собственный модуль, который, используя код, похожий на тот, который используется Frontpage, перенаправляет пользователей на определенную страницу, основываясь на определенных критериях.
Модуль должен реализовывать hook_menu () и связывать обратный вызов меню, например, с http://example.com/frontpage ; обратный вызов страницы этого пункта меню должен просто подтвердить, что условие проверено, а затем перенаправить пользователей на определенный URL-адрес.
Скелет кода может быть чем-то похожим на следующее:
источник
Очень гибким решением будет использование панелей . Различные отображения могут быть представлены на основе любых критериев, и управляется через пользовательский интерфейс.
источник
Я исправил так:
источник
hook_page_alter
и используетdrupal_is_front_page
для перенаправления пользователей, используяdrupal_goto
, исходя из некоторых условий (в данном случае $ user-> uid не должно быть 0)Модуль « Правила » также может быть использован для установки главной страницы «программно».
Фактически создаваемое правило будет представлять собой вариант ответа в Redirect, вошедших в систему (прошедших проверку) пользователей на другой главной странице с использованием правил или кода php .
И, при желании, объединение его с модулем « Флаг » может улучшить пользовательский опыт. Например, для зарегистрированных пользователей, чтобы указать, какие из возможных лицевых страниц они считают своими «любимыми».
источник
Если вы хотите программно установить это глобально, вы можете установить переменную в settings.php:
источник
Я изменил узел домашней страницы (на поддоменах), установив переменную в hook_url_outbound_alter ()
И затем перенаправление:
источник