Respostas:
Você pode usar variable_set()
para isso.
variable_set('site_frontpage', $value);
hook_install
ou hook_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:
/**
* Implements hook_menu().
*/
function mymodule_menu() {
$items = array();
$items['frontpage'] = array(
'page callback' => 'mymodule_frontpage_view',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
function mymodule_frontpage_view() {
// These variables can be useful to redirect the users
// to specific pages, basing on the language currently set for
// the content, or on the fact the user is logged in.
$langcode = $GLOBALS['language_content']->language;
$logged_in = user_is_logged_in();
if ($condition) {
drupal_goto($redirect);
}
}
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.
Corrigi assim:
/**
* Implements hook_page_alter.
* @param type $page
*/
function my_module_page_alter(&$page){
global $user;
$is_fron_page = drupal_is_front_page();
if($is_fron_page && $user->uid){
$redirect = 'users/'.$user->name.'/my-argument';
drupal_goto($redirect);
}
}
hook_page_alter
e usa drupal_is_front_page
para redirecionar usuários, usando drupal_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".
Se você deseja definir programaticamente isso globalmente, pode definir a variável em settings.php:
$conf['site_frontpage'] = 'some/custom/path';
Alterei o nó da página inicial (nos subdomínios) definindo a variável em hook_url_outbound_alter ()
variable_set('site_frontpage', $value);
E depois redirecionando:
$_GET['q'] = 'node/' . $domain_homepage_node_id;