Mam pole, które jest tekstem typu i chcę przekonwertować go na listę typów (tekst) w Drupalu 7. Nie mogę po prostu zmienić wartości, ponieważ wygrał ' t pozwól mi, czy istnieje prosty sposób na zrobienie tego?Konwertuj tekst pola na listę (tekst) drupal 7
Odpowiedz
Nie ma łatwej drogi, nie. O ile mogę powiedzieć to podręcznik DB zmienia trzeba zrobić:
W
field_config
zmiana kolumna do „list_text” imodule
kolumnie „listy” dla danej dziedzinietype
.Następnie należy zmienić szeregowaną tablicę w kolumnie
data
, aby dopasować ją do typu listy (będzie to oczywiście miało ustawienia dla typów tekstu). Nie ma łatwego sposobu, aby pokazać, jak to zrobić tutaj, najlepiej byłoby porównać tablicę serializowaną z inną dla innego pola typu listy, wtedy zobaczysz, jakie wartości musisz usunąć/zmienić . Tablicaallowed_values
podsettings
będzie miejscem, w którym umieścisz wartości listy. Po zmianie, przekształć go ponownie i umieść z powrotem w kolumniedata
dla swojego pola.Potem usunąć kolumny z danej dziedzinie za
field_data
ifield_revision
tabel, które rozpoczynają sięfield_myfield_
ale nie sąfield_myfield_value
(typ lista nadal potrzebuje tej kolumny).Dodaj indeks do tych tabel dla kolumny
value
.Wyczyść pamięci podręczne
muszę ostrzec, że jest całkowicie niesprawdzone to po prostu wydaje się mieć sens, patrząc na struktury tabeli, byłby to dobry pomysł, aby wziąć kopię zapasową trzech stołach Będę grał na wszelki wypadek.
Właśnie napisałem jakiś kod, który powinien obsługiwać to dla ciebie w moim Helper module: http://cgit.drupalcode.org/helper/tree/lib/FieldChangeHelper.php?h=7.x-1.x
FieldChangeHelper::changeType('my_text_field_name', 'list_text');
To powinno działać dobrze dla większości prostych spraw i pól, ale powinien być dokładnie sprawdzony. Obecnie nie aktualizuje również żadnych formaterów pól, więc po uruchomieniu tej funkcji należy przejrzeć konfigurację wyświetlania pola.
Dzięki człowieku - to działało świetnie i oszczędzało mnóstwo czasu :) –
Pracował jak urok! Dziękuję –
Musiałem również zmienić typ widżetu, który można zrobić, edytując dane bezpośrednio w 'field_config_instance', lub edytując pole i wybierając" Wybierz "lub" Checkboxes "jako typ widgetu. Również jako wskazówka, najłatwiej było najpierw wybrać pole wyboru i użyć zserializowanych danych do edycji istniejącej kolumny. Zasadniczo wystarczy zmienić nazwę (i długości znaków dla tych pozycji) oraz identyfikator. – Wayne