В hook_node_info () вашего модуля добавьте свойство 'module'
(см. http://api.drupal.org/api/function/hook_node_info/6).
Например:
/**
* Implementation of hook_node_info().
*/
function foo_node_info() {
return array(
'footypea' => array(
'name' => t('Foo Type A'),
'description' => t('This is Foo Type A'),
'module' => 'footypea', //This will be used for hook_form()
),
'footypeb' => array(
'name' => t('Foo Type B'),
'description' => t('This is Foo Type B'),
'module' => 'footypeb', //This will be used for hook_form()
),
);
}
Теперь вы можете добавить следующую hook_form () реализации для каждого типа (см. http://api.drupal.org/api/function/hook_form/6).
/**
* Implementation of hook_form().
*/
function footypea_form(&$node, $form_state) {
// Define the form for Foo Type A
}
/**
* Implementation of hook_form().
*/
function footypeb_form(&$node, $form_state) {
// Define the form for Foo Type B
}
Хитрость в том, что свойство модуля каждого элемента в hook_node_info()
не обязательно должно быть таким же, как у модуля, реализующего hook_node_info()
. КаждыйОпределенный тип может иметь уникальное свойство модуля для реализации зависимых от типа хуков.