답변:
사용할 수 있습니다 variable_set()
.
variable_set('site_frontpage', $value);
hook_install
또는 hook_update_N
다음에 이것을 사용하는 것이 좋습니다.
익명 사용자와 인증 된 사용자에 대해 다른 프론트 페이지를 설정할 수 있는 모듈 ( Frontpage , 내가 유지 관리 하는 모듈 )이 있습니다. 이 모듈을 사용하면 타사 모듈이 사용자가 대신 리디렉션되는 페이지를 변경하거나 페이지를 렌더링하는 데 사용되는 구조 배열을 변경할 수 있습니다. 타사 모듈은 익명 또는 인증 된 프론트 페이지가 프론트 페이지 모듈 내에 설정되지 않았거나 노드로드 중 오류가있는 경우에만 경로 재 지정 URL을 변경할 수 있습니다. 나중에 타사 모듈이 사용자를 선택한 특정 페이지로 리디렉션 할 수 있도록 모듈이 변경 될 수 있습니다.
또는 Frontpage에서 사용하는 것과 유사한 코드를 사용하여 특정 기준에 따라 사용자를 특정 페이지로 리디렉션하는 사용자 지정 모듈을 만들 수 있습니다.
모듈은 hook_menu ()를 구현 하고 메뉴 콜백을 http://example.com/frontpage ; 해당 메뉴 항목의 페이지 콜백은 단순히 조건이 확인되었는지 확인한 다음 사용자를 특정 URL로 리디렉션해야합니다.
코드 스켈레톤은 다음과 유사 할 수 있습니다.
/**
* 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);
}
}
매우 유연한 솔루션은 패널 을 사용하는 것 입니다. 기준에 따라 다른 디스플레이를 제공 할 수 있으며 UI를 통해 제어됩니다.
나는 이렇게 고쳤다.
/**
* 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
, 어떤 조건에 따라를 drupal_is_front_page
사용하여 사용자를 리디렉션 하고 사용 하는 사용자를 리디렉션하는 데 사용 됩니다 drupal_goto
(이 경우 $ user-> uid는 0이 아니어야 함)
hook_url_outbound_alter () 에서 변수를 설정하여 하위 도메인의 홈페이지 노드를 변경했습니다.
variable_set('site_frontpage', $value);
그리고 리디렉션 :
$_GET['q'] = 'node/' . $domain_homepage_node_id;