Yanıtlar:
Bunun için kullanabilirsiniz variable_set()
.
variable_set('site_frontpage', $value);
hook_install
veya hook_update_N
daha sonra kullanmak iyi olmalı.
Bir modül (Orada Frontpage anonim kullanıcılar ve doğrulanmış kullanıcılar için farklı bir ön sayfasını ayarlamak için izin verir ben tutulan biridir). Modül, üçüncü taraf modüllerin, kullanıcıların yönlendirildiği sayfayı değiştirmesine veya sayfayı oluşturmak için kullanılan yapı dizisini değiştirmesine olanak tanır. Üçüncü taraf modülleri, yönlendirme URL’sini yalnızca Adsız veya kimliği doğrulanmış ön sayfa Ön Sayfa modülüne ayarlanmadığında veya düğüm yükleme sırasında bir hata olduğunda değiştirebilir; modül ileride üçüncü taraf modüllerin kullanıcıları seçtikleri belirli bir sayfaya yönlendirmelerine izin verecek şekilde değiştirilecektir.
Alternatif olarak, Ön Sayfa tarafından kullanılana benzer bir kod kullanarak, kullanıcıları belirli ölçütlere dayanarak belirli bir sayfaya yönlendiren özel bir modül oluşturabilirsiniz.
Modül hook_menu () işlevini yerine getirmeli ve örneğin http://example.com/frontpage ; Bu menü öğesinin sayfa geri çağrısı bir koşulun doğrulanmış olduğunu doğrulamalı ve ardından kullanıcıları belirli bir URL'ye yönlendirmelidir.
Kod iskeleti, aşağıdakine benzer bir şey olabilir:
/**
* 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);
}
}
Panelleri kullanmak çok esnek bir çözüm olacaktır . Herhangi bir kriter temelinde farklı gösterimler sunulabilir ve bir UI ile kontrol edilir.
Böyle düzelttim:
/**
* 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
ve kullanır (bu durumda $ drupal_is_front_page
drupal_goto
Kurallar modülü "programlama" frontpage ayarlamak için de kullanılabilir.
Aslında oluşturulacak kural, Redirect'te oturum açan (kimliği doğrulanmış) kullanıcıların, kuralları veya php kodunu kullanarak farklı bir ön sayfaya verdikleri cevabın bir çeşididir .
Ve isteğe bağlı olarak onu Bayrak modülüyle birleştirmek , kullanıcı deneyimini daha da artırabilir. Örneğin, giriş yapan kullanıcılar için hangilerinin “favorileri” olarak gördüklerini gösteren olası ön sayfalardan hangisi olduğunu belirtmelidir.
Bunu global olarak programlı olarak ayarlamayı düşünüyorsanız, değişkeni settings.php dosyasında ayarlayabilirsiniz:
$conf['site_frontpage'] = 'some/custom/path';
Hook_url_outbound_alter () değişkenini ayarlayarak ana sayfa düğümünü (alt etki alanlarında) değiştirdim
variable_set('site_frontpage', $value);
Ve sonra yönlendirme:
$_GET['q'] = 'node/' . $domain_homepage_node_id;