#php #forms #drupal #drupal-6 #drupal-modules
#php #формы #drupal #drupal-6 #drupal-модули
Вопрос:
Я изо всех сил пытаюсь программно отобразить форму для отображения в области просмотра страницы моего узла. У меня есть следующий код в моем «simplemodule».
function simplemodule_newcomer_form($form_state){
$form = array();
$form['simplemodule_newcomer']['name'] = array(
'#type' => 'textfield',
'#title' => t('name'),
'#description' => t(''),
'#weight' => -1,
);
$form['simplemodule_newcomer']['email'] = array(
'#title' => t('email'),
'#type' => 'textfield',
'#description' => t(''),
'#weight' => 0,
);
$form['simplemodule_newcomer']['phone'] = array(
'#title' => t('telephone No.'),
'#type' => 'textfield',
'#description' => t(''),
'#weight' => 0,
);
$form['submit_button'] = array(
'#type' => 'submit',
'#value' => 'enter',
);
return $form;
}
function simplemodule_newcomer_form_submit($form_id, amp;$form_state){
//dealing with submitted data
}
Этот код работает, но только по определенной ссылке в моем меню администрирования.
Что я хочу сделать, так это заставить форму отображаться и отправляться на определенном узле в режиме просмотра. Таким образом, создается эффект, что при посещении узла есть форма для заполнения.
Ответ №1:
Вы можете реализовать hook_nodeapi()
и прикрепить свою форму с помощью drupal_get_form()
:
function simplemodule_nodeapi(amp;$node, $op, $a3 = NULL, $a4 = NULL) {
if ($node->nid == $the_nid amp;amp; $op == 'view') {
$node->content['my_additional_field'] = array(
'#value' => drupal_get_form('simplemodule_newcomer_form'),
'#weight' => 10,
);
}
}
Вы можете использовать #weight
ключ, чтобы указать, где по отношению к другому содержимому на странице будет отображаться ваша форма. Также вам нужно будет очистить кэши Drupal при реализации этого хука, чтобы убедиться, что он обнаружен.
Комментарии:
1. Спасибо за помощь новичку 🙂
Ответ №2:
Конечно, вы можете использовать
hook_form_alter(amp;$form, amp;$form_state, $form_id) and
hook_nodeapi(amp;$node, $op, $teaser = NULL, $page = NULL)
http://api.drupal.org/api/drupal/modules—system—system.api.php/function/hook_form_alter/7