Как изменить тип поля с текста в свободной форме на термин таксономии и сохранить существующие данные?
Мне нужно изменить одно из полей типа узла из текста в свободной форме, чтобы оно было термином таксономии, но в данных уже содержится около 250 000 записей.
Как я могу изменить этот тип поля без потери существующих данных?
1 answers
Изменить тип поля, как вы просили, невозможно.
Однако возможная альтернатива для достижения аналогичного результата выглядит следующим образом (в указанном порядке):
- Создайте новое поле термина таксономии, чтобы "с этого момента" любые будущие обновления узлов (или создаваемые новые узлы) использовали это новое поле.
- Используйте модуль Правила для создания правила, подобного этому:
- Событие правил:
before saving content
. - Условия правил:
-
entity has field
, с полем = старое поле. - И НЕ (
entity has field
, с полем = новое поле).
-
- Действие правил:
set Drupal message
, которое содержит некоторые инструкции о том, что старое поле должно быть вычеркнуто, а новое поле должно содержать соответствующее значение (s.
- Событие правил:
Очевидно, что этот подход займет "некоторое" время, если это нужно сделать вручную, по 1 узлу за раз. Но используя Представления (для построения списка аналогичных узлов, подлежащих обновлению) и VBO (для массового обновления таких списки) вы могли бы (должны!) быть в состоянии немного ускорить этот процесс. Обратитесь к моему ответу на " Как массово обновлять поля списка выбора?" для примера с более подробной информацией об этом.