it-swarm-ko.tech

사용자 프로필에서 사용자 정의 사용자 필드를 숨기는 방법은 무엇입니까?

Drupal 7에서, 비 관리 사용자가 사용자 정의 사용자 프로파일 필드를 변경하지 못하게하는 가장 좋은 방법은 무엇입니까?

사용 사례 : "고객 ID"라는 사용자 필드를 만들어 사용자 (실제 고객)를 변경하지 않기를 바랍니다. 이 필드는 내 자신의 참조 및 다른 모듈의 프로그래밍 방식으로 사용됩니다. 사용자에게 고객 ID가 표시되는 것을 신경 쓰지 않지만 편집 할 수는 없습니다.

사용자 프로필 페이지의 페이지 템플릿을 재정의해야합니까? 그렇다면 필드를 읽기 전용 또는 보이지 않도록 템플릿이 어떻게 변경됩니까?

당신의 도움을 주셔서 대단히 감사합니다!

크리스

19
ctlarsen

Field Permissions 찾고 있습니다. 다음은 모듈의 프로젝트 페이지에서 이에 대한 인용입니다.

... 사이트 관리자가 필드 수준 권한을 설정하여 모든 엔티티에서 필드를 편집, 조회 및 작성할 수 있습니다.

특징 :

  • 노드뿐만 아니라 모든 엔티티에서 필드 권한을 사용하십시오.
  • 사용자의 액세스 권한에 따라 다른보기를 패턴화할 수있는 역할 기반 필드 권한.
  • 작성자 수준 권한을 통해 엔터티 소유자에 따라 필드를보고 편집 할 수 있습니다.
  • 각 필드에 대한 권한은 기본적으로 활성화되어 있지 않습니다. 대신 관리자는이 기능이 필요한 필드에 대해 이러한 권한을 명시 적으로 활성화 할 수 있습니다.
  • 필드 권한 개요
17
pasine

사용자 프로필 양식에서 필드를 숨기려면 #access 를 사용하여 필드의 hook_form_FORMID_alter 속성을 FALSE로 설정할 수 있습니다.

다음 스 니펫은 비 관리자를위한 사용자 프로파일 양식에서 field_organisation 필드를 숨 깁니다.

function YOURCUSTOMMODULE_form_user_profile_form_alter(&$form, &$form_state, $form_id) {
  $current_user = user_uid_optional_load();
  if($current_user->uid != 1) {
    $form['field_organisation']['#access'] = FALSE;
  }
}

drupalanswers에서 이와 유사한 질문을 참조하십시오

template_preprocess_user_profile 을 사용하여 사용자 프로필 페이지 (양식 아님)에서 필드를 숨길 수도 있습니다.

다음 코드 조각은 관리자가 아닌 사용자를 위해 field_organisation 필드를 숨 깁니다.

function YOURCUSTOMMODULE_preprocess_user_profile(&$vars) {
  $current_user = user_uid_optional_load();
  if($current_user->uid != 1) {
    unset($vars['user_profile']['field_organisation']);
  }
}
5
batigolix

http://drupal.org/project/user_readonly 라는 모듈이있는 것 같습니다. "이 모듈을 사용하면 관리자가 사용자 계정/프로필 필드의 수정을 막을 수 있습니다. 관리자는 어떤 필드를 선택할지 선택할 수 있습니다. 허용되지 않거나 허용되는 필드가 있습니다. "

1
Jayesh Jose