it-swarm-korea.com

익명 사용자를 위해 다른 템플릿을 어떻게 사용합니까?

사용자가 익명 사용자이거나 인증 된 사용자 인 경우 page1.tpl.php를 사용하고 싶습니다. 다른 역할과 함께 page.tpl.php를 사용하고 싶습니다.
코드는 어떻게 작성합니까?

4
enjoylife

추가 page1.tpl.php가 필요하지 않습니다. page.tpl.php에서 다음을 사용할 수 있습니다.

<?php
  global $user;

  if ($user->uid > 0) {
    print /* Insert content only for authenticated users. */;
  }
?>

사용자에게 "관리자"역할이있을 때 일부 컨텐츠를 표시하려면 다음을 사용할 수 있습니다.

<?php
  global $user;

  if (in_array('administrator', array_values($user->roles)))) {
    print /* Insert content only for users with "administrator" role. */;
  }
?>
4
WestieUK

시나리오마다 다른 템플릿을 처리하려면 context module 이 좋은 도구입니다. 이 경우는 매우 간단하므로 제안 된 코드로 처리 할 수 ​​있습니다. 그러나 컨텍스트 모듈을 사용하면 좀 더 관리하기 쉽고 사용할 템플릿과 삽입 할 블록을 결정할 수 있습니다. 훌륭한 모듈이며 내가 만드는 거의 모든 사이트에 사용하는 모듈 중 하나입니다.

5
googletorp

전처리 기능을 사용할 수 있다고 생각합니다. 그런 것 :

function yourtheme_preprocess_page($vars) {
   global $user;
   if (!$user->uid || in_array('user authenticated', array_values($user->roles))) {
      $vars['template_files'][] = 'page1';
   }
}
4
Rafael Caceres

Drupal 사이트의 모든 사용자는 익명의 사용자 또는 인증 된 사용자입니다. 익명 또는 인증 된 사용자에 page1.tpl.php 템플릿을 사용해야한다는 것은 page1.tpl.php를 의미합니다 템플릿이 항상 사용됩니다.

인증 된 사용자가 다른 특정 역할이없는 사용자를 의미하는 경우 page.tpl.php 파일에서 다음 코드를 사용할 수 있습니다.

if (empty(array_diff(array_keys($GLOBALS['user']->roles), array(0, 1))) {
  // The user is anonymous, or the user doesn't have other roles
  // apart the one of authenticated user.
}
1
kiamlaluno