Chciałbym dodać dodatkowe pola do profilu użytkownika. Chciałbym, aby użytkownik mógł edytować prawie wszystkie informacje o nim przechowywane w bazie danych. Mam kilka pomysłów: może da się to zrobić za pomocą interfejsu API.
Sposób dodawania pól użytkowników według kodu, dzięki czemu można umieścić to w module.
Znalazłem to: field_create_field z w komentarzach sposób na utworzenie pola dla użytkownika po włączeniu modułu:
/**
* Implementation of hook_enable().
*/function MYMODULE_enable(){// Check if our field is not already created.if(!field_info_field('field_myField')){
$field = array('field_name'=>'field_myField','type'=>'text',);
field_create_field($field);// Create the instance on the bundle.
$instance = array('field_name'=>'field_myField','entity_type'=>'user','label'=>'My Field Name','bundle'=>'user',// If you don't set the "required" property then the field wont be required by default.'required'=> TRUE,'settings'=> array(// Here you inform either or not you want this field showing up on the registration form.'user_register_form'=>1,),'widget'=> array('type'=>'textfield','weight'=>'1',),);
field_create_instance($instance);}}
Znalazłem tę bardzo przydatną stronę, która wyjaśnia, jak eksportować pola utworzone za pomocą interfejsu użytkownika. Ten eksport może być następnie użyty z field_create_field i field_create_instance do zrobienia wszystkiego programowo
Whisky
Dzięki, to było bardzo przydatne - masz pomysł, jak automatycznie przypisać wagę?
inertialmedia
możesz dodać 'weight' => '1',do tablicy widżetów w polu „ $instanceDodaję” w mojej odpowiedzi.
FLY
W przypadku skomplikowanych przypadkach, warto najpierw dodać pola ręcznie /admin/config/people/accounts/fields, a następnie użyć pola Inspector na /admin/config/development/field-inspectoreksportowanie pól i pól tablice definicji instancji do użycia w kodzie jak wyżej.
tanius
Aby zachować DB w czystości, możesz także zaimplementować hook_uninstall, aby usunąć pole. function MYMODULE_uninstall() {field_delete_field('field_myField');}
dxvargas
35
Znalazłem stronę trudną do znalezienia, ale w / admin / config / people / account / fields możesz dodawać pola do użytkowników.
Jeśli jest to serwis społecznościowy i dodajesz pola ustawień prywatności, użyj modułu Prywatność na użytkownika .
Jeśli chcesz dodać tabulatory lub pola akordeonu, użyj modułu field_group, aby dodać nowe grupy do pól kont użytkowników (URL: / admin / config / people / account / fields).
A jeśli chcesz mieć różne pola dla różnych ról, użyj modułu profile2 .
Odpowiedzi:
Sposób dodawania pól użytkowników według kodu, dzięki czemu można umieścić to w module.
Znalazłem to: field_create_field z w komentarzach sposób na utworzenie pola dla użytkownika po włączeniu modułu:
źródło
'weight' => '1',
do tablicy widżetów w polu „$instance
Dodaję” w mojej odpowiedzi./admin/config/people/accounts/fields
, a następnie użyć pola Inspector na/admin/config/development/field-inspector
eksportowanie pól i pól tablice definicji instancji do użycia w kodzie jak wyżej.function MYMODULE_uninstall() {field_delete_field('field_myField');}
Znalazłem stronę trudną do znalezienia, ale w / admin / config / people / account / fields możesz dodawać pola do użytkowników.
źródło
users
. „Pola” tworzą nowe pola poza tabeląusers
.hook_form_alter(&$form, &$form_state, $form_id)
Profil w D7 jest trochę dziwny. Profile2 moduł może zrobić to, czego potrzebujesz.
źródło
W Drupal 7 użyj tego procesu, aby dodać nowe lub istniejące pole z różnymi typami pól (takimi jak Obraz, Pole znaczników itp.) Do profilu użytkownika:
Przejdź do „ Administrator → Konfiguracja → Ludzie: Ustawienia konta ” w menu administratora, a następnie do „ Zarządzaj polami ” (druga zakładka).
(Alternatywnie użyj bezpośredniej ścieżki w adresie URL:)
/admin/config/people/accounts/fields
.źródło
Jakie pola chcesz dodać?
źródło