Предположим , у меня есть тип содержимого Person
с полями: Name
, Age
,Email
Этот тип контента контролируется вызываемой функцией, test
поэтому я могу контролировать ее и передавать на действующий сайт.
Мой рабочий процесс выглядит так:
- Я добавляю новое поле на
Person
вызываемыйPhone
- локально делаю:
drush fu test -y
- Я редактирую,
test.info
чтобы увеличить номер версии - Я фиксирую изменения в моем хранилище
- Я выдвигаю функцию на сайт в реальном времени (копирую файлы функций)
- на живом сайте я делаю:
drush fr test -y
- на живом сайте я делаю:
drush cc all
Затем новое поле появляется на сайте Person
.
Если на первом шаге я удалю поле, Person
поле не будет удалено с живого сайта. Как мне это решить? Я не хочу вручную удалять его из пользовательского интерфейса на живом сайте.
Этот рабочий процесс правильный?
Ответы:
Это обоюдоострый меч, он предотвращает удаление данных, что всегда хорошо. Там на самом деле ничего не решить, это ожидаемое поведение.
Это тот же рабочий процесс, который мы используем и выполняем уже более года, и он работает очень хорошо. Я бы сказал, что это правильно, но это очень субъективный ответ.
источник
drush field-delete field
Правильный способ удаления созданного компонентами контента - через hook_update_N (который должен быть реализован в файле
your_module.install
).Основная идея с функциями заключается в управлении конфигурацией с помощью кода. Использование
hook_update_N
согласуется с этим, так как удаление поля находится в коде (которым можно управлять с помощью контроля версий) - тогда как эквивалентная командаdrush field-delete field
не вызывается из управляемого кода; это отдельный шаг командной строки, который вам нужно выполнить (и запомнить, чтобы выполнить).источник
drush field-delete field
работать хорошо?hook_update()
согласуется с этим, поскольку удаление поля выполняется в коде (которым можно управлять с помощью контроля версий), тогда как команда drush не вызывается из управляемого кода; это отдельный шаг командной строки, который вам нужно выполнить (и запомнить, чтобы выполнить).hook_update_N
.Создайте новый файл с именем "your_feature_name.install"
Внутри файла объявите hook_update_N , вы можете использовать field_delete_field () и указать имя поля, которое вы хотите удалить в качестве параметра.
Запустите update.php, и поля будут удалены.
источник
Если вы используете его
field_phone
в других областях, вы можете просто удалить его из своего типа контента Person, но не удалять его полностью с вашего сайта. Вручную создайтеYOUR_FEATURE_NAME.install
файл в папке вашей функции следующим образом:Если бы вы удаляли это из Персонального абзаца вместо Персонального типа контента, вы могли бы изменить первый условный оператор на что-то вроде этого:
источник