Опубликовано в сб, 01/06/2013 - 00:22 |
Весь процесс добавления поля к сущности можно разделить на два этапа: Объявление (создание) поля и Объявление (создание) экземпляра поля, привязанного к той или иной сущности.
Теперь несколько примеров добавления стандартных полей Друпала:
Целое число
$field = field_info_field('field_ng_app_id'); //пробуем загрузить поле if ($field == NULL) { //если поля не существует, то создадим его $field = array( 'field_name' => 'field_имяПоля', 'type' => 'number_integer', 'cardinality' => 1, //количество экземпляров поля 'settings' => array(), 'entity_types' => array('node'), //к какому типу сущности можно добавлять ); field_create_field($field); } // Получим все экземпляры полей, связанные с нашим типом материала // Если поле еще не привязано к типу материала, то сделаем это $field_inst=field_info_instances('node', 'типМатериала'); if(!isset($field_inst['field_имяПоля'])){ // создаём экземпляр поля $instance = array( 'field_name' => 'field_имяПоля', 'entity_type' => 'node', 'bundle' => 'типМатериала', 'label' => t('New field'), 'description' => t('New field'), 'weight' => 1, 'widget' => array( 'type' => 'number', 'label' => t('New field'), ), ); $field = field_create_instance($instance); }
Поле File
//Поле с логотипом $field = field_info_field('field_ng_logo'); if ($field == NULL) { $field = array( 'field_name' => 'field_ng_logo', 'type' => 'file', 'entity_types' => array('node'), 'cardinality' => 1, 'settings' => array(), ); field_create_field($field); } if(!isset($field_inst['field_ng_logo'])){ // создаём экземпляр поля $instance = array( 'field_name' => 'field_ng_logo', 'entity_type' => 'node', 'bundle' => 'nextgame', 'label' => t('Logo'), 'required'=>false, 'description' => t('Logo app'), 'weight' => 1, 'settings' => array( 'file_directory' => 'nextgame/logo', 'file_extensions' => 'png gif jpg jpeg bmp', 'max_filesize' => '500 KB', ), 'display'=>array( 'default'=>array( 'label' => 'hidden', ), 'teaser'=>array( 'type' => 'file_default', 'label' => 'hidden', ), ), 'widget' => array( 'type' => 'file_generic', 'label' => t('Logo'), ), ); $field = field_create_instance($instance); }
Комментарии
Олегср, 02/09/2015 - 10:51 #1
А как обстоят дела с полями типа "Ссылка на таксономию" ?
p/s Эта страница оказалась одна из первой в выдаче гугла. По этому, я думаю, что описание для остальных полей будет очень кстати.
Добавить комментарий