2010-06-06 2 views
2

하나의 모듈 안에 여러 사용자 지정 콘텐츠 형식을 선언하고 관리 할 수 ​​있습니까? 네 개의 사용자 지정 콘텐츠 형식이 필요한 사이트를 만들고 있는데 모든 콘텐츠 형식에 대한 모듈을 만드는 대신 하나의 모듈에서 관리하려고합니다. 몇 가지 테스트를 거친 후 불가능한 것으로 나타났습니다. 왜냐하면, hook_form과 content type이 모듈의 같은 이름을 공유하지 않는다면, drupal은 hook_form을 호출하지 않기 때문입니다. 여기한 모듈에서 여러 개의 사용자 지정 콘텐츠 형식 관리하기 (drupal)

는 내가하고 싶은 방법 -

function mycontent_node_info(){ 
return array(
    'mycontent1' => array(
     'name' => t('....'), 
     'module' => 'mycontent', 
     'description' => t('...), 
     'has_title' => TRUE, 
     'title_label' => t('Title'), 
     'has_body' => TRUE, 
     'body_label' => t('content body'), 
    ), 
    'mycontent2' => array(
     ....... 
    ), 
    'mycontent3' => array(
     ...... 
    ), 
    'mycontent4' => array(
     ...... 
    ), 
); 
} 

function mycontent1_form(&$node){ 
$form['control1'] = array(
    '#type' => 'select', 
    '#options' => array(
     '0' => t('selection 1'), 
     '1' => t('selection 2'), 
    ), 
    '#attributes' => array('id'=>'control1'), 
); 

$form['control2'] = array(
    '#type' => 'select', 
    '#options' => array(
     '0' => t('1'), 
     '1' => t('2'), 
     '2' => t('3'), 
     '3' => t('4'), 
    ), 
    '#attributes' => array('id'=>'control2'), 
); 
return $form; 
} 

function mycontent2_form(&$node){ 
.... 
} 

function mycontent3_form(&$node){ 
    .... 
} 


function mycontent4_form(&$node){ 
    .... 
} 

내가 여기 뭔가 잘못하고 또는 불가능하며 모든 콘텐츠 형식에 대한 모듈을 만드는 것보다 대안 다른가 없습니다입니다. 당신의 도움에 감사드립니다.

답변

1

모든 후크의 접두어는 모듈 이름 (예 : mycontent_node_info() 및 mycontent_form (& $ 노드)이어야합니다. 콘텐츠 유형 자체는 원하는대로 호출 할 수 있다고 생각하지만 관습에 따라 모듈에서 정의하는 전역 요소는 네임 스페이스 문제를 피하기 위해 모듈 이름 앞에 접두사를 사용해야합니다. 따라서 콘텐츠는 mycontent_type1, mycontent_type2 등이됩니다. hook_form을 다루는 방법은 전달 된 노드의 유형을 확인하고 이에 따라 행동하는 것입니다.

+0

죄송합니다. 고마워. – Andrew

1

기능 모듈 (http://drupal.org/project/features)을 사용하여 콘텐츠 형식을 내보낼 수도 있습니다. 자동으로 코드를 생성하여이 작업을 수행하고 코드에 어떤 문제가 있는지 살펴볼 수 있습니다.

관련 문제