많은 CCK 필드가있는 노드가 있습니다. 익명 사용자로부터 필드를 숨기고 싶습니다. 나는 http://www.lullabot.com/articles/modifying-forms-5-and-6에서 약 두 가지 방법을 발견했습니다. 먼저 아래 코드로 theme_theme()을 시도했습니다hook_theme()은 노드의 표시 순서에 영향을줍니다.
function ssaa_theme1(&$existing, $type, $theme, $path) {
return array(
'volunteer_node_form' => array(
'arguments' => array('form' => null),
),
);
}
function ssaa_volunteer_node_form($form) {
$out = '';
if (user_is_anonymous()) {
unset($form['field_active']);
}
$out .= drupal_render($form);
return $out;
}
이 간단한 코드는 예상대로 작동했지만 이상한 결과를 만들어 냈습니다. 저장/미리보기 버튼이 양식의 맨 위에 나타나고 맨 아래로 이동할 수 없습니다. 처음에는 drupal_render() 함수를 의심했지만 명령에 대해서는 아무 것도하지 않았습니다. ssaa_volunteer_node_form() 함수가 비어있을 때와 동일한 결과를 생성합니다.
그래서 hook_form_alter()를 사용하고 성공한 두 번째 옵션을 시도했습니다. 하지만 첫 번째 접근 방식이 제대로 작동하지 않는 이유를 파악하고 싶습니다. 나는 내가하고 싶은 일을하는 것이 더 쉽고 가벼운 방법이라고 생각한다.
아이디어가 있으십니까?
와우 필드 권한 모듈을 알지 못했습니다. "Edit own field permission"과 같은 몇 가지 장점이 그럴 가치가있는 것 같습니다. – theunraveler
제안한 필드 사용 권한 모듈을 사용하면 완벽하게 수행됩니다. 해당 CCK 필드의 기본값도 작동합니다. 나는 디폴트 값 작동이 정말로 필요하다. Content Permissions 모듈을 사용해 보았지만 체크 할 수있는 체크 박스가 너무 많습니다 (시스템에 약 20 개의 콘텐츠 유형과 8 개의 역할이 있습니다). 고마워요! – user201563