Dodać pole do wielu typów treści jednocześnie?

9

Chcę dodać pole do wielu typów treści jednocześnie i skonfigurować je dla wszystkich jednocześnie.

Powodem jest to, że mam wiele typów treści, z których wszystkie wymagają aktualizacji, dodając do każdego nowe pole. To pole zostanie skonfigurowane tak samo dla wszystkich typów treści. Muszę powtórzyć ten proces dodawania, a następnie konfigurowania pola dla każdego typu zawartości, do którego chcę go dodać, a po pewnym czasie staje się to uciążliwe.

Czy istnieje sposób na masowe dodawanie / konfigurowanie nowego pola do wielu typów treści?

Lester Peabody
źródło
Ile masz rodzajów treści?
bobylapointe
Zakładam, że to pytanie nie jest już istotne dla OP, ale dotyczy Nigela Watersa, który ustalił nagrodę. Czy chciałbyś Nigel skomentować?
Kari Kääriäinen,
Jest ich 25 (jest to bardzo duża strona, która wymaga oddzielnych typów treści).
Nigel Waters,
Btw, innym rozwiązaniem jest zatrudnienie kogoś taniego za tego rodzaju rzeczy :)
donquixote
Lub makro przeglądarki?
donquixote

Odpowiedzi:

9

Szerokie linie korzystające z modułu Funkcje mogą być:

  1. Dodaj ręcznie pole do dwóch typów treści (aby zobaczyć wzór)
  2. Utwórz funkcję, w tym podstawy pól i instancje pól dla nowo utworzonych pól
  3. Edytuj utworzony moduł, mnożąc bazy pól i instancje do wszystkich potrzebnych typów treści
  4. Włącz edytowany moduł
Kari Kääriäinen
źródło
Nie pamiętam, jak dokładnie funkcje radzą sobie z polami. Czy można wyłączyć tę funkcję po utworzeniu pól?
donquixote
Moduł noworodka będzie zależał od funkcji, więc w zasadzie nie, o ile wiem.
Kari Kääriäinen
Mam na myśli wyłączenie modułu noworodka, a nie funkcje. Pytanie brzmi, czy instancje w terenie nadal tam będą. Może Lester Peabody lub Nigel Waters mogą spróbować i zdać relację.
donquixote
Przepraszam. Tak, właściwie oba można wyłączyć, pola będą widoczne w bazie danych, rozumiem, ponieważ teraz to testuję.
Kari Kääriäinen
To jest właściwa odpowiedź dla domyślnych konfiguracji drupala i większości innych konfiguracji drupala. Ale jeśli dostępne są różne tryby wyświetlania dla różnych typów treści, lepiej jest ręcznie skonfigurować pola dla każdego typu zawartości lub upewnić się, że używasz poprawnych typów wyświetlania w kodzie tablicy field_instance.
Sumeet Pareek
5

Użyj modułu Narzędzia terenowe :

Zbiór przydatnych narzędzi interfejsu użytkownika do pracy z polami:

Overview of fields with links to edit single instances, and all instances at once
Clone any field instance to multiple entities and bundles
Clone all field instance of a bundle to multiple entities and bundles
Import and export fields
Delete multiple instances of a field
Apply a vocabulary to multiple entities and bundles at once (the same way vocabularies were applied to content types on Drupal 6)
... your idea here. Patches welcome!
Nigel Waters
źródło
Brzmi niesamowicie, muszę na to spojrzeć.
Lester Peabody,
3

Jeśli nie masz nic przeciwko napisaniu niestandardowego modułu do tego, stosunkowo łatwo jest dodać pole do typu zawartości za pomocą kodu:
$instance = array(
'field_name' => 'field_firstname',
'label' => 'First name',
'entity_type' => 'node',
'bundle' => 'person',
);
field_create_instance($instance);

Powyższy kod doda pole „nazwa_pola” do typu zawartości o nazwie komputera „osoba”. Aby można było utworzyć moduł, w którym formularz pozwala wybrać pole i liczbę typów treści, a po przesłaniu pole jest dodawane do wszystkich wybranych typów treści.

LVA
źródło
1

Kilka razy, gdy musiałem to zrobić, korzystałem z Field Collection .

Zapewnia pole gromadzenia pól, do którego można dołączyć dowolną liczbę pól.

Jest to wciąż dość uciążliwe, ponieważ musisz dodać pole kolekcji pól do każdego typu zawartości. To powiedziawszy, jeśli dodajesz 5 lub 6 pól do wielu typów treści, musisz skonfigurować początkowe 5 lub 6 pól tylko raz w kolekcji pól.

Następnie utworzysz pole kolekcji pól (na wszelki wypadek nazwijmy to field_collection_field) na jednym z typów treści, a następnie ponownie użyjesz tego samego pola na wszystkich pozostałych.

Jak powiedziałem, nadal musisz skonfigurować jedno pole na x ilości typów treści .. ale to lepsze niż tworzenie 10 pól na 10 typach treści (na przykład).

Chapabu
źródło
aah..sorry. Właśnie przeczytałem również twoje pytanie i potrzebuje tylko jednego pola. Przepraszamy za marnowanie czasu> _ <
Chapabu,
To powiedziawszy, możesz umieścić to jedno pole w kolekcji pól i skonfigurować je tak, jak chcesz, a następnie odwołać się do kolekcji pól z już skonfigurowanym polem. Jest to jednak trochę przesada.
Chapabu,
Nie ma problemu, Chapabu, wciąż jest to przydatna informacja na przyszłość, na wypadek, gdybym musiał zrobić coś takiego po drodze.
Lester Peabody
1

Jeśli możesz swobodnie manipulować bazą danych bezpośrednio, instancje pól są przechowywane w tabeli {field_config_instance}. Możesz dodać / skonfigurować swoje pole dla jednego typu zawartości, a następnie znaleźć rekord w tabeli bazy danych i powielić go.

Musisz zmienić dwie wartości kolumn w zduplikowanym wierszu:

  • id: Powinna być nowa liczba całkowita unikalna dla tabeli
  • pakiet: powinna być nazwą komputera nowego typu zawartości
Les Lim
źródło