Вы здесь

Как программно добавить поле при создании словаря таксономии ?

0

День добрый!
Собственно вопрос, просто создаю словарь при определенных условиях:

$vocabulary = array(
    'machine_name' => $node->field_apilogin['und'][0]['value'],
    'name' => $node->title,
);
$vocabulary = (object) $vocabulary;
taxonomy_vocabulary_save($vocabulary);

Каким образом мне добавить сюда (в словарь) 2 обыкновенных текстовых поля (ещё идеальней, уже существующих в другом словаре), со стандартными параметрами ?
Гуглил, находил решения вида:

$new_term->field_name_field[LANGUAGE_NONE][0]['value'] = "Значение";

Но это не работает, либо я что-то делаю не так.
Я подозреваю что поле должно формироваться массивом значений, и прикреплятся к словарю, но не могу найти как это сделать, буду благодарен за любую помощь или наводку.

Версия Drupal: 
7.x
Категория: 
Field API
Вопрос задан 06.03.2018 - 15:29
Аватар пользователя Apuox
Apuox
20

Ответы

1

Типа того:

$entity_type = 'taxonomy_term';
$bundle = 'my_vocubullary';
$field_name = 'field_name';
$field_title = t('Field title');
$instance = field_info_instance($entity_type, $field_name, $bundle);
if (empty($instance)) {
  $instance = array(
    'field_name'  => $field_name,
    'entity_type' => $entity_type,
    'bundle'      => $bundle,
    'label'       => $field_title,
    'required'    => 1, // If required
    'settings' => array(
      'max_length' => 64,
    ),
    'widget'      => array(
      'type'   => 'text_textfield',
    ),
    'display'     => array(
      'default' => array(
        'label'  => 'inline',
        'type'   => 'textfield',
      ),
      'teaser'  => array(
        'label'  => 'inline',
        'type'   => 'textfield',
      ),
    ),
  );
  $instance = field_create_instance($instance);
}

По значениям лучше пробежаться на одном из существующих полей.

Ответ дан 06.03.2018 - 16:13

Отлично, думаю то, что надо, большое спасибо!)

Комментарий оставлен 06.03.2018 - 16:15