Главная/Статьи/Drupal 7: Как создать форму в псевдо-поле
Drupal

Drupal 7: Как создать форму в псевдо-поле

Решение задачи размещения формы, созданной через 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'),
    ),
  );
}

Реализация выполняется в пользовательском модуле и позволяет сэкономить время при разработке функциональности корзины заказов без подключения тяжёлых зависимостей.