Как программно добавлять пользовательские поля в Drupal 7 - PullRequest
5 голосов
/ 08 августа 2011

Я пытаюсь создать .install для модуля, который я мигрирую из Drupal 6. Для этого требуются два «поля профиля», которые в drupal 6 проверялись и создавались автоматически.

Чтобы обновить его до drupal 7, я пытаюсь сделать это с полями! Достаточно просто, верно?

Пока у меня есть

if(!field_info_field('user_fullname')) {
    $field = array(
        'field_name' => 'user_fullname',
        'type' => 'text',
        'settings' => array(
            'required' => TRUE,
        ),
    );
    field_create_field($field);
    $instance = array(
        'field_name' => 'user_fullname',
        'entity_type' => 'user',
        'label' => 'The user\'s full name',
        'bundle' => 'additional_info',
        'required' => true,
        'widget' => array(
            'type'=>'options_select',
        )
    );
    field_create_instance($instance);
}

Что, безусловно, создает поле, но оно не отображается в профиле пользователя?
Нужно ли что-то дополнительное для этого? Если да, то что?

Большое спасибо.

решено : из-за пакета (не совсем уверенного, что это за пакет на самом деле), я изменил пакет на 'user', и он появился!

Ответы [ 4 ]

4 голосов
/ 12 декабря 2011

bundle в значительной степени совпадает с типом контента.Но поскольку в D7 пользователи тоже являются сущностями, но не являются контентом, использование термина «тип контента» не имеет смысла.Ссылка: Барри Джаспан, DrupalCon Paris, 2009 г. Сессия: Введение в API Field для разработчиков модулей.

Введение в API Field Field для разработчиков модулей

0 голосов
/ 02 апреля 2015

Пакет в Drupal является подмножеством сущности.В этом случае тип сущности - Пользователь, и существует только один тип Пользователя, поэтому комплект - Пользователь.

В таксономии: таксономия - это сущность, а словари - это связки.

В узлах: узлы - это сущность, а типы контента - это связки.

Ни одно поле не может быть присоединено к объекту, свойства присоединены к объекту (опубликовано, прикреплено и т. Д.).Поля прикреплены к комплектам.

У меня недостаточно представителей, чтобы комментировать, поэтому вот мой ответ для тех, кого вы нашли в Google.Как и я.

0 голосов
/ 19 января 2012

Как я знаю в D7, связки - это что-то вроде модели для сущности, и она может иметь поля. Пакеты drupal по умолчанию - это узел, пользователь и таксономия, но новый API также позволяет разработчику создавать собственные пакеты. Каждое поле должно принадлежать связке.

0 голосов
/ 09 августа 2011

Это произошло из-за пакета (я не совсем уверен, что это за пакет на самом деле), я изменил пакет на «пользователь», и он появился!

...