Submitted by drudev on Mon, 08/27/2012 - 13:18
/* сперва работаем с полем (чтобы создать экземпляр поля,
"прототип" - то есть @само поле@ должно быть уже создано) */
if ($field = field_info_field('field_2000')) //
{
log_light(" deleting field !");
watchdog("LL=","deletion field is completed !");
field_delete_field($field);
log_light(" deletion field is completed !");
watchdog("LL=","filed is deleted !");
}
else
{
log_light(" no info about instance !"); // если нет - то создаём сначала поле,а потом его экземпляр привязанный к статье
$field = array(
"field_name"=>"field_2000", // имя поля
"type"=>"node_reference",// его тип (спасибо модулю references)
'cardinality' => 1,
'settings' => array(),
'entity_types' => array('user', 'node'), // видимо сущности к которым можно будет привязывать экземпляры поля
);
field_create_field($field); // создаем поле
watchdog("LL="," filed is created !");
}
// работаем с экземпляром поля
if ($field = field_info_instance('node','field_2000','article')) // если поле существует - удалим его
{ field_delete_instance($field);
log_light(" delete filed instance !");
watchdog("LL=","delete filed instance !");
} else // а если нет - то создадим
{
$instance = array(
"field_name"=>"field_2000",
'entity_type' => 'node', // указываем сущность к которой будет относится экземляр поля
"label"=>t("Cool"),
'bundle' => 'article',// выбираем привязку к "статье"
"type"=>"node_reference",
"widget"=>array(
"type"=>"options_select"
),
);
field_create_instance($instance); /*создаём экземпляр этого поля и привязываем его к типу "статья"*/
watchdog("LL="," instance is created !");
}