Как изменить тип поля с текста в свободной форме на термин таксономии и сохранить существующие данные?


Мне нужно изменить одно из полей типа узла из текста в свободной форме, чтобы оно было термином таксономии, но в данных уже содержится около 250 000 записей.

Как я могу изменить этот тип поля без потери существующих данных?

Author: Pierre.Vriens, 2015-11-13

1 answers

Изменить тип поля, как вы просили, невозможно.

Однако возможная альтернатива для достижения аналогичного результата выглядит следующим образом (в указанном порядке):

  • Создайте новое поле термина таксономии, чтобы "с этого момента" любые будущие обновления узлов (или создаваемые новые узлы) использовали это новое поле.
  • Используйте модуль Правила для создания правила, подобного этому:
    • Событие правил: before saving content.
    • Условия правил:
      • entity has field, с полем = старое поле.
      • И НЕ (entity has field, с полем = новое поле).
    • Действие правил: set Drupal message, которое содержит некоторые инструкции о том, что старое поле должно быть вычеркнуто, а новое поле должно содержать соответствующее значение (s.

Очевидно, что этот подход займет "некоторое" время, если это нужно сделать вручную, по 1 узлу за раз. Но используя Представления (для построения списка аналогичных узлов, подлежащих обновлению) и VBO (для массового обновления таких списки) вы могли бы (должны!) быть в состоянии немного ускорить этот процесс. Обратитесь к моему ответу на " Как массово обновлять поля списка выбора?" для примера с более подробной информацией об этом.

 4
Author: Pierre.Vriens, 2017-04-13 12:46:55