Как программно добавить форму к узлу в Drupal 7?
Мне нужно добавить программную форму к узлу в Drupal 7. Как прикрепить форму к узлу?
function addtabexample_form($node, &$form_state) {
$type = node_type_get_type($node);
$form['title'] = array(
'#type' => 'textfield',
'#title' => check_plain($type->title_label),
'#default_value' => !empty($node->title) ? $node->title : '',
'#required' => TRUE,
'#weight' => -5,
);
$form['field1'] = array(
'#type' => 'textfield',
'#title' => t('Custom field'),
'#default_value' => $node->field1,
'#maxlength' => 127,
);
return $form;
}
Ответы - Как программно добавить форму к узлу в Drupal 7? / How to programmatically add a form to a node in Drupal 7?

16.07.2012 02:20:05
Ваш код имеет некоторые проблемы, которые потребуют некоторой переписывания... Во-первых, я бы предложил прочитать форму API Quickstart , которая является достойным источником для выполнения этой работы.
Я не уверен, как вы получите объект $node для этого. У вас есть $node в параметрах функции и $form в качестве возвращаемого значения...
См. http://drupal.org/node/197122 например (я добавил часть D7)формы, которая может быть встроена в узел. Но делать это очень плохо - вы столкнетесь с проблемами повторного объявления функций, проблемами индексирования и целым рядом проблем.
Я знаю, что это не настоящий ответ, но я не знаю, как написать это в 500 символов.

16.07.2012 12:03:02
Вы можете следовать этому примеру кода, используя hook_node_view()
function [YOUR_MODULE]_node_view($node, $view_mode, $langcode)
{
$my_form = drupal_get_form('addtabexample_form', $node);
$node->content['my_form_attached'] = array(
'#markup' => drupal_render($my_form),
'#weight' => 10,
);
}