Программная работа с полями в Drupal
В процессе деплоймента нам часто приходится создавать/изменять/удалять поля. Ниже приведены некоторые примеры, как это можно сделать из кода.
Создание полей
Пример добавления поля my_custom_field к ноде типа page используя field_create_field() и field_create_instance():
$field = array( 'field_name' => 'my_custom_field', 'cardinality' => 1, 'translatable' => TRUE, 'type' => 'text', ); field_create_field($field); $instance = array( 'field_name' => 'my_custom_field', 'entity_type' => 'node', 'label' => 'My custom field', 'bundle' => 'page', 'required' => TRUE, 'widget' => array( 'type' => 'text_textfield', ), 'display' => array( 'default' => array( 'type' => 'text_default', ), ), ); field_create_instance($instance);
Изменение полей
Пример изменение параметра required у уже существующего поля my_custom_field в ноде типа page используя field_read_instance() и field_update_instance():
$instance = field_read_instance('node', 'my_custom_field', 'page'); $instance['required'] = FALSE; field_update_instance($instance);
Удаление полей
Пример удаления существующего поля my_custom_field в ноде типа page используя field_delete_field(), field_delete_instance() и field_info_instance():
field_delete_field('my_custom_field'); field_delete_instance(field_info_instance('node', 'my_custom_field', 'page'));
Для реализации вышеприведеного кода можно использовать hook_update_N().
- Войдите, чтобы оставлять комментарии