Câu trả lời:
Bạn có thể sử dụng variable_set()
cho điều đó.
variable_set('site_frontpage', $value);
hook_install
hoặc hook_update_N
sau đó sẽ tốt.
Có một mô-đun ( Frontpage , một trang tôi duy trì) cho phép đặt một trang trước khác cho người dùng ẩn danh và người dùng được xác thực. Mô-đun cho phép các mô-đun của bên thứ ba thay đổi trang mà người dùng được chuyển hướng thay thế hoặc thay đổi mảng cấu trúc được sử dụng để hiển thị trang. Các mô-đun của bên thứ ba chỉ được phép thay đổi URL chuyển hướng khi trang trước cho ẩn danh hoặc xác thực chưa được đặt trong mô-đun Frontpage hoặc khi có lỗi trong quá trình tải nút; mô-đun có thể sẽ được thay đổi trong tương lai để cho phép các mô-đun của bên thứ ba chuyển hướng người dùng đến một trang cụ thể mà họ chọn.
Thay vào đó, bạn có thể tạo một mô-đun tùy chỉnh, sử dụng mã tương tự như mô-đun được sử dụng bởi Frontpage, chuyển hướng người dùng đến một trang cụ thể, dựa trên các tiêu chí cụ thể.
Mô-đun nên triển khai hook_menu () và liên kết một cuộc gọi lại menu, ví dụ: http://example.com/frontpage ; cuộc gọi lại trang của mục menu đó chỉ cần xác minh một điều kiện được xác minh và sau đó chuyển hướng người dùng đến một URL cụ thể.
Bộ xương mã có thể là một cái gì đó tương tự như sau:
/**
* 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);
}
}
Một giải pháp rất linh hoạt sẽ là sử dụng Tấm . Các màn hình khác nhau có thể được trình bày dựa trên bất kỳ tiêu chí nào và được điều khiển thông qua giao diện người dùng.
Tôi đã sửa như thế này:
/**
* 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
và sử dụng drupal_is_front_page
để chuyển hướng người dùng, sử dụng drupal_goto
, dựa trên một số điều kiện (trong trường hợp này $ user-> uid không nên là 0)
Các quy tắc mô-đun có thể được sử dụng để thiết lập cũng frontpage "programatically".
Quy tắc thực sự được tạo, sẽ là một biến thể của câu trả lời tại Redirect đã đăng nhập (xác thực) người dùng vào một trang đầu khác bằng cách sử dụng quy tắc hoặc mã php .
Và tùy ý kết hợp nó với mô-đun Flag , có thể có thể nâng cao hơn nữa trải nghiệm người dùng. Ví dụ: đối với người dùng đã đăng nhập để cho biết những trang đầu nào có thể họ coi là "yêu thích" của họ.
Nếu bạn đang tìm cách thiết lập chương trình này trên toàn cầu, bạn có thể đặt biến trong settings.php:
$conf['site_frontpage'] = 'some/custom/path';
Tôi đã thay đổi nút trang chủ (trên các tên miền phụ) bằng cách cài đặt biến trong hook_url thừng ra_alter ()
variable_set('site_frontpage', $value);
Và sau đó chuyển hướng:
$_GET['q'] = 'node/' . $domain_homepage_node_id;