Czy powinienem ponownie wykorzystać istniejące pola Drupala?
Opublikowany: 2022-02-16Czasami jesteśmy w stanie dać naprawdę jasną radę: „Zrób to!” lub „Nie rób tego!”
To nie będzie jeden z tych wpisów na blogu.
Drupal daje możliwość ponownego wykorzystania pól. Jeśli masz pole „Obraz”, możesz użyć tego samego pola w każdym typie treści w witrynie. Jednak nie zawsze jest jasne, czy ponowne użycie pól jest dobrym pomysłem. Czasami tak jest, czasami nie.
Oto przegląd zalet i wad, które należy wziąć pod uwagę przed ponownym użyciem pól Drupala.
Ogólne porady dotyczące ponownego wykorzystania pól
Możesz wybrać funkcję „Użyj ponownie istniejącego pola” za każdym razem, gdy przejdziesz do „Struktury”, następnie „Typy treści” i kliknij „Zarządzaj polami” dla typu treści.
Dokumentacja Drupal.org oficjalnie zaleca, aby nie wykorzystywać ponownie pól:
Zaleca się tworzenie nowych pól zamiast ponownego wykorzystywania istniejących, chyba że masz ku temu wyraźny powód.
Jednak porady te stały się bardziej zniuansowane w ostatnich latach, a Drupal oficjalnie twierdzi, że są to zarówno zalety, jak i wady.
Dokumentacja interfejsu użytkownika Drupal Field zawiera szczegółową sekcję zatytułowaną „Ponowne użycie pól”:
Istnieją dwa główne powody ponownego wykorzystywania pól. Po pierwsze, ponowne wykorzystanie pól może zaoszczędzić czas nad definiowaniem nowych pól. Po drugie, ponowne użycie pól umożliwia także wyświetlanie, filtrowanie, grupowanie i sortowanie zawartości według pól w różnych typach zawartości. Na przykład dodany moduł Widoki umożliwia tworzenie list i spisów treści. Jeśli więc używasz tego samego pola w wielu typach zawartości, możesz utworzyć widok zawierający wszystkie te typy zawartości razem wyświetlające to pole, posortowane według tego pola i/lub przefiltrowane według tego pola. Jest jeden główny powód, dla którego nie należy ponownie używać pola: różne uprawnienia. Na przykład możesz potrzebować różnych ról użytkownika, aby mieć różne poziomy dostępu do pola, w zależności od typu zawartości, do którego zostało dodane. Może to być trudne, jeśli ponownie użyjesz pola.
Zaleta: ponowne użycie pól może uprościć pracę
Tak, może nastąpić zwiększenie prędkości, ale oszczędność czasu jest bardzo mała. Bardziej atrakcyjną zaletą jest to, że ponowne wykorzystanie pól może czasami uprościć administrowanie witryną. Inicjatywa internetowa ładnie to podsumowuje:
Ponowne wykorzystanie pól może również zmniejszyć złożoność systemu. Zamiast tworzyć i utrzymywać 10 różnych pól, administratorzy Drupala utrzymują tylko dwa pola i ich dokumentację. Administratorzy baz danych muszą jedynie poprawić wydajność dwóch dodatkowych tabel. KISS to zawsze dobra zasada.
Zdecydowanie łatwiej byłoby zastosować uprawnienia, ustawienia i elementy projektowe do jednego ponownie wykorzystywanego pola niż do 10 unikalnych pól.
Zaleta: niektóre treści działają dobrze z polami ponownie używanymi
Wróćmy ponownie do dokumentacji Drupal Field UI:
ponowne użycie pól umożliwia także wyświetlanie, filtrowanie, grupowanie i sortowanie zawartości według pól w różnych typach zawartości. Na przykład dodany moduł Widoki umożliwia tworzenie list i spisów treści. Jeśli więc używasz tego samego pola w wielu typach zawartości, możesz utworzyć widok zawierający wszystkie te typy zawartości razem wyświetlające to pole, posortowane według tego pola i/lub przefiltrowane według tego pola.
Jeden z autorów komentarzy w dokumentacji Drupal.org mówi to samo o Widokach. Wskazują, że widoki mogą przeszukiwać treści w wyrafinowany sposób. Tak więc, jeśli masz wiele różnych typów zawartości, z różnymi polami daty, widoki mogą łączyć je w jeden widok. Zwracają jednak również uwagę, że Widoki nie są tak wyrafinowane w sortowaniu. Tak więc, jeśli masz wiele różnych typów treści, z różnymi polami dat, widoki będą miały trudności z sortowaniem treści we wszystkich tych różnych polach dat.

Wada: pola ponownie używane są nieelastyczne
Brandon Williams na Twitterze ładnie to podsumował:
na początku to dobry pomysł, ale daj kilka tygodni, zmiany wymagań, w końcu i tak tworzysz osobne
W dużym stopniu, jeśli wybierzesz ponownie używane pola, ograniczasz zmiany, które możesz później łatwo wprowadzić w swoich danych. Wprowadzanie aktualizacji jest również znacznie bardziej czasochłonne, ponieważ musisz edytować każde pole osobno.
Wada: ponowne wykorzystanie pól utrudnia eksport lub migrację danych
Ponowne wykorzystanie pól może stać się problemem, gdy musisz wyeksportować swoje dane lub gdy musisz przeprowadzić migrację do nowej wersji Drupala lub innej platformy.
Każde pole Drupala ma swoją własną tabelę bazy danych, jak pokazano poniżej. Wyodrębnienie tych danych może być trudne. Moduł Funkcje (najczęstszy sposób eksportowania danych z Drupala) przez długi czas zmagał się ze współdzielonymi polami, chociaż obecne wersje mogą sobie z nimi radzić bardziej efektywnie.

Ta rada jest podobna do naszych przemyśleń na temat korzystania z wielu witryn. Za każdym razem, gdy zaczynasz budować zależności między bazami kodu lub tabelami baz danych, zwiększasz złożoność witryny.
Zaleta czy wada? Wydajność
Dokumentacja Drupala przedstawia jedną możliwą korzyść z ponownego wykorzystania pól:
Ponowne wykorzystanie pól nie tylko przyspiesza działanie Drupala, ale także ułatwia utrzymanie projektu.
Ten wątek w Stack Overflow zawiera bardzo istotne omówienie wydajności. Zawiera ten komentarz:
Prawdziwym problemem jest jednak liczba pól, które masz. Ponieważ obecnie w Drupalu 7, pełna konfiguracja pól wszystkich pól, niezależnie od tego, czy są załadowane, czy nie, jest pobierana z pamięci podręcznej przy każdym pojedynczym żądaniu. Widziałem witryny z ponad 250 polami, w których ładowanie i usuwanie numeru seryjnego konfiguracji pól zajmuje ponad 13 MB pamięci”.
Tak więc ponowne użycie pól może dać niewielką poprawę wydajności, pozwalając nam mieć mniejszą łączną liczbę pól.
Jednak te małe ulepszenia mogą zostać utracone gdzie indziej. To znowu z Web Initiative:
[pola] dodatkowa złożoność systemu Drupal. Podczas tworzenia nowego pola definicja pola jest dodawana do tabeli klasy pól, a konfiguracja pola jest dodawana do tabeli instancji pola; w międzyczasie do bazy danych Drupal dodawana jest nowa tabela do przechowywania danych pola. Tabele bazy danych zwiększają złożoność systemu. Ponadto zapytania węzłów będą generować wyrażenia JOINexpressions tabel z danymi pola. Wiele sprzężeń JOIN wpłynie na wydajność bazy danych, ponieważ MySQL słabo reaguje na zapytania z wieloma sprzężeniami JOIN w tabelach, jeśli nie są prawidłowo skonfigurowane.
Streszczenie
Przepraszamy, że nie mamy łatwej odpowiedzi na to pytanie. To jest pytanie, w którym skorzystasz z lektury tego problemu i zrozumienia zalet i wad. Jeśli tworzysz prawdziwą witrynę, warto zbudować ją w środowisku testowym, aby dowiedzieć się więcej o tym, jak te zalety i wady wpływają na potrzeby Twojej witryny.