2010-06-06 6 views
2

Est-il possible de déclarer et de gérer plusieurs types de contenu personnalisés dans un même module? Je crée un site qui nécessite quatre types de contenu personnalisés et je souhaite les gérer à partir d'un seul module au lieu de créer un module pour chaque type de contenu. Après quelques tests, j'ai découvert que cela semblait impossible. Parce que, sauf si hook_form et le type de contenu partagent le même nom de module, drupal n'appelle pas hook_form.Gestion de plusieurs types de contenu personnalisés à partir d'un module (drupal)

Voici comment je voudrais faire -

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){ 
    .... 
} 

Suis-je en train de faire quelque chose de mal ici ou est pas possible et il n'y a pas d'autre alternative que de créer le module pour tous les types de contenu. J'apprécie beaucoup votre aide.

Répondre

1

Le préfixe de tous vos hooks doit être le nom de votre module, c'est-à-dire mycontent_node_info() et mycontent_form (& $ node). Je pense que le type de contenu lui-même peut être appelé comme bon vous semble, mais par convention tout ce que vous définissez globalement dans un module doit être préfixé du nom du module pour éviter les problèmes d'espace de noms. Donc, votre contenu devient mycontent_type1, mycontent_type2, etc ... Comme pour traiter hook_form, je suppose que la façon de le faire est de vérifier le type du nœud passé et agir en conséquence.

+0

Désolé pour ma réponse en retard. Merci ça marche. – Andrew

1

Vous pouvez essayer d'utiliser le module Fonctionnalités (http://drupal.org/project/features) pour exporter vos types de contenu. Il génère automatiquement le code pour faire ce travail, et vous pouvez jeter un oeil à ce qui ne va pas avec votre code.

Questions connexes