Quero definir a primeira página do Drupal programaticamente em tempo de execução.
Como posso fazer isso? Isso é possível?
22
Você pode usar variable_set()
para isso.
variable_set('site_frontpage', $value);
hook_install
ouhook_update_N
então deve ser bom.Existe um módulo ( Frontpage , que eu mantive) que permite definir uma página inicial diferente para usuários anônimos e usuários autenticados. O módulo permite que módulos de terceiros alterem a página para a qual os usuários são redirecionados ou alterem a matriz de estrutura usada para renderizar a página. Os módulos de terceiros têm permissão para alterar o URL de redirecionamento somente quando a página inicial de anônimos ou autenticados não foi configurada no módulo Frontpage ou quando ocorreu um erro durante o carregamento do nó; o módulo provavelmente será alterado no futuro para permitir que módulos de terceiros redirecionem os usuários para uma página específica que eles selecionarem.
Como alternativa, você pode criar um módulo personalizado que, usando código semelhante ao usado pelo Frontpage, redirecione os usuários para uma página específica, com base em critérios específicos.
O módulo deve implementar hook_menu () e associar um retorno de chamada de menu a, por exemplo, http://example.com/frontpage ; o retorno de chamada da página desse item de menu deve simplesmente verificar se uma condição foi verificada e, em seguida, redirecionar os usuários para um URL específico.
O esqueleto do código pode ser algo semelhante ao seguinte:
fonte
Uma solução muito flexível seria usar painéis . Diferentes telas podem ser apresentadas com base em qualquer critério e são controladas por meio de uma interface do usuário.
fonte
Corrigi assim:
fonte
hook_page_alter
e usadrupal_is_front_page
para redirecionar usuários, usandodrupal_goto
, com base em alguma condição (neste caso, $ user-> uid não deve ser 0)O módulo Regras também pode ser usado para definir a página inicial "programaticamente".
A regra realmente a ser criada seria uma variação da resposta nos usuários logados no Redirect (autenticados) em uma página inicial diferente usando regras ou código php .
E, opcionalmente, combiná-lo com o módulo Flag , pode melhorar ainda mais a experiência do usuário. Por exemplo, para usuários logados, para indicar quais das possíveis páginas da frente eles consideram seus "favoritos".
fonte
Se você deseja definir programaticamente isso globalmente, pode definir a variável em settings.php:
fonte
Alterei o nó da página inicial (nos subdomínios) definindo a variável em hook_url_outbound_alter ()
E depois redirecionando:
fonte