web-gelistirme-sc.com

Ön sayfa programlı olarak nasıl ayarlanır?

Drupal ön sayfasını programlı olarak çalışma zamanında ayarlamak istiyorum.
Bunu nasıl yapabilirim? Mümkün mü?

22
Ek Kosmos

Bunun için variable_set() kullanabilirsiniz.

variable_set('site_frontpage', $value);
22
Rafael Caceres

Anonim kullanıcılar ve kimliği doğrulanmış kullanıcılar için farklı bir ön sayfa ayarlamanıza izin veren bir modül ( Frontpage , bu benim korumamdır). Modül, üçüncü taraf modüllerin, kullanıcıların bunun yerine yönlendirildiği sayfayı değiştirmesine veya sayfayı oluşturmak için kullanılan yapı dizisini değiştirmesine izin verir. Üçüncü taraf modüllerin yönlendirme URL'sini yalnızca Anonim veya kimlik doğrulaması yapılmış ön sayfa Ön Sayfa modülünde ayarlanmadığında veya düğüm yükleme sırasında bir hata olduğunda değiştirebilir; modül, gelecekte üçüncü taraf modüllerin kullanıcıları seçtikleri belirli bir sayfaya yönlendirmesine izin vermek için gelecekte değiştirilecektir.

Alternatif olarak, Frontpage tarafından kullanılana benzer kodu kullanarak, kullanıcıları belirli ölçütlere dayanarak belirli bir sayfaya yönlendiren özel bir modül oluşturabilirsiniz.

Modül hook_menu () uygulamalı ve menü geri aramasını örneğin http://example.com/frontpage ; bu menü öğesinin sayfanın geri çağrılması, bir koşulun doğrulandığını 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);
  }
}
16
kiamlaluno

Çok esnek bir çözüm Paneller kullanmak olacaktır. Herhangi bir kriter temelinde farklı ekranlar sunulabilir ve bir kullanıcı arayüzü aracılığıyla kontrol edilir.

9
tim.plunkett

Ben böyle sabit:

/**
 * 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);
  }
}
4
r0ber

Kurallar modülü, ön sayfayı "programlı" olarak ayarlamak için de kullanılabilir.

Oluşturulacak gerçek kural, Oturum açmış (kimliği doğrulanmış) kullanıcıları kurallar veya php kodu kullanarak farklı bir ön sayfaya yönlendirin.

Ve isteğe bağlı olarak Bayrak modülü ile birleştirilmesi, kullanıcı deneyimini daha da geliştirebilir. Örneğin, giriş yapmış kullanıcılar olası ön sayfalardan hangilerini "favori" olarak kabul ettiklerini belirtmek için.

1
Pierre.Vriens

Bunu global olarak programlı olarak ayarlamak istiyorsanız, değişkeni settings.php içinde ayarlayabilirsiniz.

$conf['site_frontpage'] = 'some/custom/path';
1

Bir hook_url_outbound_alter () =

variable_set('site_frontpage', $value);

Ve sonra yönlendirme:

$_GET['q'] = 'node/' . $domain_homepage_node_id;
0
TvC