Jawaban:
Anda bisa menggunakannya variable_set()
untuk itu.
variable_set('site_frontpage', $value);
hook_install
atau hook_update_N
kemudian harus baik-baik saja.
Ada modul ( Frontpage , yang merupakan salah satu yang saya kelola) yang memungkinkan untuk mengatur halaman depan yang berbeda untuk pengguna anonim, dan pengguna terotentikasi. Modul ini memungkinkan modul pihak ketiga untuk mengubah halaman yang diarahkan pengguna, atau mengubah susunan struktur yang digunakan untuk membuat halaman. Modul pihak ketiga diizinkan untuk mengubah URL pengalihan hanya ketika halaman depan untuk anonim atau dikonfirmasi belum diatur dalam modul Frontpage, atau ketika ada kesalahan selama pemuatan node; modul mungkin akan diubah di masa depan untuk memungkinkan modul pihak ketiga mengarahkan pengguna ke halaman tertentu yang mereka pilih.
Sebagai alternatif, Anda dapat membuat modul khusus yang, menggunakan kode yang mirip dengan yang digunakan oleh Frontpage, mengarahkan pengguna ke halaman tertentu, berdasarkan kriteria tertentu.
Modul harus mengimplementasikan hook_menu () dan mengaitkan panggilan balik menu ke, misalnya, http://example.com/frontpage ; panggilan balik halaman dari item menu tersebut harus cukup memverifikasi suatu kondisi diverifikasi, dan kemudian mengarahkan pengguna ke URL tertentu.
Kerangka kode bisa mirip dengan yang berikut ini:
/**
* 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);
}
}
Solusi yang sangat fleksibel adalah dengan menggunakan Panel . Tampilan yang berbeda dapat disajikan berdasarkan kriteria apa pun, dan dikendalikan melalui UI.
Saya tetap seperti ini:
/**
* 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
, dan menggunakan drupal_is_front_page
untuk mengarahkan ulang pengguna, menggunakan drupal_goto
, berdasarkan pada beberapa kondisi (dalam hal ini $ user-> uid tidak boleh 0)
The Rules modul dapat digunakan juga untuk mengatur frontpage "programatik".
Aturan sebenarnya yang akan dibuat, akan menjadi variasi dari jawaban di Redirect yang masuk (diautentikasi) pengguna ke halaman depan yang berbeda menggunakan aturan atau kode php .
Dan secara opsional menggabungkannya dengan modul Bendera , mungkin dapat lebih meningkatkan pengalaman pengguna. Misalnya untuk pengguna yang masuk untuk menunjukkan halaman depan mana yang mungkin mereka anggap sebagai "favorit" mereka.
Jika Anda ingin menetapkan ini secara terprogram secara global, Anda dapat mengatur variabel di settings.php:
$conf['site_frontpage'] = 'some/custom/path';
Saya telah mengubah simpul beranda (pada subdomain) dengan menyetel variabel dalam hook_url_outbound_alter ()
variable_set('site_frontpage', $value);
Dan kemudian mengarahkan:
$_GET['q'] = 'node/' . $domain_homepage_node_id;