Я программно создал тип контента во время установки модуля (используя настройку хранилища на месте).
Я хочу удалить этот тип контента при удалении модуля.
Есть ли способ сделать это с Drupal 8?
Просто убедитесь, что тип узла зависит от вашего модуля, тогда Drupal автоматически удалит его для вас.
См. Node.type.book.yml в модуле книги для примера, это соответствующая часть:
dependencies:
enforced:
module:
- book
Обратите внимание, что пользователям придется удалить все содержимое этого типа, прежде чем они смогут удалить модуль.
Это, кажется, делает это для меня.
$content_type = \Drupal::entityManager()->getStorage('node_type')->load('MACHINE_NAME_OF_TYPE');
$content_type->delete();
drupal snippet --code='$content_type = \Drupal::entityManager()->getStorage("node_type")->load("MACHINE_NAME_OF_TYPE"); $content_type->delete();'
Не имея достаточного количества комментариев, я выложу это здесь:
@Berdir, мне кажется, что принудительного применения модуля в файле node.type.custom.yml недостаточно для принудительного удаления узлов при удалении
В моем случае тип контента удаляется при удалении модуля. Но удаление пользовательского контента (узлов) не навязывается. Для достижения этого пользовательский модуль должен реализовать
ModuleUninstallValidatorInterface
.При реализации пользовательский модуль не может быть удален до удаления пользовательских узлов. Поле выбора будет деактивировано.
Вместо реализации интерфейса я делаю это грязно, удаляя узлы в
hook_uninstall()
:источник
Чтобы запустить какое-либо действие при удалении модуля, вы должны реализовать его
hook_uninstall
в*.install
файле вашего модуля . Перед удалением типа контента вы можете убедиться, что все узлы этого типа контента также были удалены. Наконец, после удаления модуля и удаления типа контента не забудьте экспортировать обновленную конфигурацию.источник
bundle
изMACHINE_NAME_OF_TYPE
, как запрос узла-ид на основе ответ делает, или нет? Я имею в виду, что это кажется довольно дорогим (если есть много NID), и я хотел бы использовать это решение, когда это возможно.