2011-10-18 13 views

Odpowiedz

5

Nie ma łatwej drogi, nie. O ile mogę powiedzieć to podręcznik DB zmienia trzeba zrobić:

  1. W field_config zmiana kolumna do „list_text” i module kolumnie „listy” dla danej dziedzinie type.

  2. 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ć . Tablica allowed_values pod settings będzie miejscem, w którym umieścisz wartości listy. Po zmianie, przekształć go ponownie i umieść z powrotem w kolumnie data dla swojego pola.

  3. Potem usunąć kolumny z danej dziedzinie za field_data i field_revision tabel, które rozpoczynają się field_myfield_ ale nie sąfield_myfield_value (typ lista nadal potrzebuje tej kolumny).

  4. Dodaj indeks do tych tabel dla kolumny value.

  5. 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.

+0

Pracował jak urok! Dziękuję –

+1

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

4

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.

+0

Dzięki człowieku - to działało świetnie i oszczędzało mnóstwo czasu :) –