В сети достаточно много примеров того, как в Drupal 7 программно добавлять поля для различных типов контента. Однако, как программно добавить поле (field) с выпадающим списком – таких примеров я так и не нашел. Главная проблема, которая здесь – каким образом передать список значений? Как оказалось, все очень просто: данные передаются внутри параметра ’settings’ (массив allowed_values). Ниже пример добавления такого поля для имеющегося типа контента «auto».
field_create_field(array(
'field_name' => 'auto_number',
'type' => 'list_text',
'cardinality' => 1,
'settings' => array(
'allowed_values' => array(
1 => '1',
5 => '5',
10 => '10',
)
),
'entity_types' => array('node'),
));
field_create_instance(array(
'field_name' => 'auto_number',
'entity_type' => 'node',
'bundle' => 'auto',
'label' => t('Select the gallery'),
'description' => t('choose the gallery'),
'widget' => array(
'type' => 'options_select'
),
),
'display' => array(
'default' => array(
'label' => 'above',
'settings' => array(),
'weight' => 1,
),
'teaser' => array(
'label' => 'above',
'settings' => array(),
'type' => 'hidden',
),
),
'required' => TRUE,
));