it-swarm-ko.tech

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

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

22
Ek Kosmos

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

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

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

매우 유연한 솔루션은 Panels 를 사용하는 것입니다. 기준에 따라 다른 디스플레이를 제공 할 수 있으며 UI를 통해 제어됩니다.

9
tim.plunkett

나는 이렇게 고쳤다.

/**
 * 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

Rules 모듈을 사용하여 프론트 페이지를 "프로그래밍 방식으로"설정할 수도 있습니다.

실제로 생성되는 규칙은 로그인 (인증 된) 사용자를 규칙 또는 PHP 코드를 사용하여 다른 프론트 페이지로 리디렉션 에 대한 답변의 변형입니다.

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

1
Pierre.Vriens

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

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

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

variable_set('site_frontpage', $value);

그리고 리디렉션 :

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