Criei programaticamente um tipo de conteúdo durante a instalação do módulo (usando a configuração de armazenamento em campo).
Quero excluir esse tipo de conteúdo enquanto desinstala o módulo.
Existe alguma maneira de fazer isso com o Drupal 8?
Apenas certifique-se de que o tipo de nó dependa do seu módulo e o Drupal o excluirá automaticamente para você.
Consulte node.type.book.yml no módulo book para obter um exemplo, esta é a parte relevante:
dependencies:
enforced:
module:
- book
Observe que os usuários terão que excluir todo o conteúdo desse tipo antes de poderem desinstalar o módulo.
Isso parece fazer isso por mim.
$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();'
Não tendo crédito suficiente para comentar, vou colocá-lo aqui:
@Berdir, parece-me que a imposição do módulo no arquivo node.type.custom.yml não é suficiente para impor a exclusão dos nós ao desinstalar
No meu caso, o tipo de conteúdo é excluído ao desinstalar o módulo. Mas a exclusão do conteúdo personalizado (nós) não é imposta. Para conseguir isso, o módulo personalizado deve implementar o
ModuleUninstallValidatorInterface
.Quando implementado, o módulo personalizado não pode ser desinstalado antes que os nós personalizados sejam excluídos. A caixa de seleção será desativada.
Em vez de implementar a Interface, estou fazendo isso sujo, excluindo os nós em
hook_uninstall()
:fonte
Para desencadear alguma ação na desinstalação de um módulo, você deve implementar
hook_uninstall
no*.install
arquivo do seu módulo . Antes de excluir o tipo de conteúdo, convém garantir que todos os nós desse tipo também sejam excluídos. Finalmente, após desinstalar o módulo e excluir o tipo de conteúdo, não se esqueça de exportar a configuração atualizada.fonte
bundle
deMACHINE_NAME_OF_TYPE
, como a consulta nó-id resposta baseada faz, ou não? Quero dizer, isso parece ser um pouco caro (se houver muitos NIDs) e eu gostaria de usar essa solução sempre que possível.