Если вы хотите прикрепить пользовательскую форму к каждому узлу, сначала вам нужно (в вашем модуле):
- напишите функцию, которая будет строить форму (см .: Генерация форм ). Если эта функция будет отображать данные, относящиеся к узлу, в соответствии с узлом, который просматривается в данный момент, вам, вероятно, потребуется передать nid или целое
$node
в качестве аргумента.
Затем вы должны решить, как вы хотите вставить вставку формы в страницу узла (или, тем не менее, это то, что узел просматривается), и есть несколько способов сделать это, включая:
- Реализация hook_nodeapi () и в рамках операции «просмотр» (т. Е.
$op == 'view'
) вы можете получить свою форму и добавить ее в $node->content
.
- Добавление формы в качестве переменной шаблона (см .: template_preprocess_node () , вы должны сделать
MYMODULE_preprocess_node(&$vars)
), чтобы вы могли поместить ее в любое место в своем пользовательском файле node.tpl.php.
Я полагаю, что есть и другие способы (ваш модуль генерирует блок с формой и т. Д.), Это зависит от того, что вам конкретно нужно.
Какой бы вариант вы ни выбрали, вы получите разметку для пользовательской формы:
<?php
// something like this for hook_nodeapi() way.
$node->content['body']['value']] .= drupal_get_form('my_custom_form_generating_function', $node);
// or something like this for the hook_preprocess_node() way.
$vars['my_custom_form'] = drupal_get_form('my_custom_form_generating_function', $vars['node']);
Если ваша функция создания форм действительно примет $ узел в качестве параметра, то вам нужно будет либо использовать PHP func_get_args () , либо явно объявить аргумент $node
в сигнатуре:
<?php
function my_custom_form_generating_function($form_state, $node) { }
И чтобы быть ясным:
... чтобы построить модуль , который появится в нижней части нашего ...
Модули Drupal - это не вещи, которые «появляются». Модули - это расширения, которые обеспечивают дополнительную функциональность для вашего сайта Drupal. Они могут реализовать хуков , которые могут или не могут в конечном итоге генерировать разметку, которая "появится" на вашем сайте.
Относительно «модулей контента» и «блочных модулей»: хотя я видел термин « узел модуль» для обозначения модулей, которые предоставляют новые типы контента, любой модуль может реализовать любой хук, и таким образом предоставьте блоки, типы контента и т. д.