프로그래밍 방식으로 프론트 페이지를 설정하는 방법은 무엇입니까? 프로그래밍 방식으로 런타임에 설정하고

Drupal 첫 페이지를 프로그래밍 방식으로 런타임에 설정하고 싶습니다.
어떻게해야합니까? 이것이 가능한가?



답변

사용할 수 있습니다 variable_set().

variable_set('site_frontpage', $value);


답변

익명 사용자와 인증 된 사용자에 대해 다른 프론트 페이지를 설정할 수 있는 모듈 ( 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);
  }
}


답변

규칙 모듈은 “프로그래밍 방식”에서 FrontPage를 설정하는 데 사용할 수 있습니다.

실제로 생성 되는 규칙은 rules 또는 php code를 사용하여 로그인 한 (인증 된) 사용자를 다른 첫 페이지리디렉션 하는 답변의 변형입니다 .

선택적으로이를 플래그 모듈 과 결합 하면 사용자 경험을 더욱 향상시킬 수 있습니다. 예를 들어, 로그인 한 사용자가 “선호”로 간주하는 가능한 첫 페이지를 표시합니다.


답변

프로그래밍 방식으로 전역 적으로 설정하려는 경우 settings.php에서 변수를 설정할 수 있습니다.

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


답변

hook_url_outbound_alter () 에서 변수를 설정하여 하위 도메인의 홈페이지 노드를 변경했습니다.

variable_set('site_frontpage', $value);

그리고 리디렉션 :

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