Решение задачи размещения формы, созданной через Drupal Form API, в псевдо-поле — для реализации простой корзины заказов без использования модуля Commerce.
Шаг 1: Создание псевдо-поля через hook_field_extra_fields()
Определяем дополнительное поле для типа контента «product»:
function acard_field_extra_fields() {
$extra['node']['product']['display']['va_cart'] = array(
'label' => t('VA Cart'),
'description' => t('Provides JS VA cart field'),
'weight' => 0,
);
return $extra;
}
Шаг 2: Отображение поля через hook_node_view()
Вызываем форму и встраиваем её в содержимое ноды:
function acard_node_view($node, $view_mode, $langcode) {
if ($view_mode == 'full' && $node->type == 'product') {
$form = drupal_get_form('acard_form_add');
$node->content['va_cart'] = $form;
}
}
Шаг 3: Создание формы через Form API
function acard_form_add($form, &$form_state) {
$form['#attributes'] = array(
'class' => 'orderblck',
'id' => array('orderblckform')
);
$form['text1'] = array(
'#type' => 'textfield',
'#attributes' => array(
'class' => array('itm'),
'placeholder' => t('My field 1'),
),
'#id' => 'textField',
);
$form['selectedfield'] = array(
'#type' => 'select',
'#title' => t('Selected'),
'#options' => array(
0 => t('No'),
1 => t('Yes'),
),
);
}
Реализация выполняется в пользовательском модуле и позволяет сэкономить время при разработке функциональности корзины заказов без подключения тяжёлых зависимостей.