2010-12-16 6 views
5

drupal6에 특정 컨텐츠 유형이 있습니다. 추가 양식에서 해당 내용 유형의 본문 필드를 숨기지 만 편집 양식에서는 숨기는 후크를 구현하고 싶습니다. 내가 어떻게 할 수 있니?drupal 양식의 필드를 숨기는 방법

답변

8

hook_form_alter를 사용할 수 있습니다. 프로그래밍 방식으로 api 빌드 형식의 내용을 변경할 수 있습니다. 이것은 당신에게 당신이 단순히 unset($form['the_field_you_dont_want']); 수있는 전체 $ 양식 배열을 제공합니다.

그러나 본문 필드를 제거하는 더 쉬운 방법은 편집 내용 유형에 '본문 필드 레이블 :'이라는 필드가 있습니다.이 칸을 비워두면 본문 필드가 생략됩니다.

0

모듈 내에서 콘텐츠 유형을 구현 했습니까 (hook_node_info 사용)? 그렇다면 has_body 속성을 false로 설정하십시오.

8

설정을 해제해도 #access 속성과 마찬가지로 값이 파괴되는 것처럼 보입니다. .

$form['field_reference']['#prefix'] = "<div class='hide'>"; 
$form['field_reference']['#suffix'] = "</div>"; 
+0

나는 이것을 했는데도 사용자가 CSS를 안다면 그는 필드를 볼 수 있으며, 사용자 편집 페이지에서 이렇게하면 필드를 편집 할 수도 있습니다. 그것은 어리석은 구현이며,'# access' = 0은 그것을 파괴해서는 안됩니다. 아마도 Drupal 8에 대한 기능 요청일까요? :) –

5

이 솔루션은 여기 https://drupal.stackexchange.com/questions/11237/hide-field-in-node-add-page 발견 나를 위해 좋은 작품을 여기에 내가 반복하고 moon.watcher의 솔루션 :이 URL을 사용하여 미리 설정 한 경우 난 그냥 (이 경우 참조 필드를 숨기기 위해 이것을 사용

function test_remove_filed_form_alter(&$form, &$form_state) { 

    if (arg(0) == 'node' && arg(1) == 'add') { 
    $form['field_test']['#access'] = 0; 
    } 

} 

(해제를 사용할 때의 단점은) 노드 프리 세이브에, 예를 들어, 완전히 분야를 제거하고 같은에 대한 추가 할 수 없다는 것이다. 내 경우에는, 난 그냥에서 필드를 제거하고 싶어 양식을 만들었지 만 나중에 노드를 저장하기 전에 채우고 싶었습니다. 위 링크의 솔루션이 나를 위해 완벽하게 작동합니다. 이유.

관련 문제