Hola, tenemos la respuesta a lo que buscas, deslízate y la obtendrás un poco más abajo.
Solución:
Solo asegúrese de que el tipo de nodo dependa de su módulo, luego Drupal lo eliminará automáticamente por usted.
Consulte node.type.book.yml en el módulo de libro para ver un ejemplo, esta es la parte relevante:
dependencies:
enforced:
module:
- book
Tenga en cuenta que los usuarios tendrán que eliminar todo el contenido de ese tipo antes de poder desinstalar el módulo.
Esto parece hacerlo por mí.
$content_type = Drupal::entityManager()->getStorage('node_type')->load('MACHINE_NAME_OF_TYPE');
$content_type->delete();
No teniendo suficiente crédito para comentar, lo pondré aquí:
@Berdir, me parece que hacer cumplir el módulo en el archivo node.type.custom.yml no es suficiente para hacer cumplir la eliminación de los nodos al desinstalar
Tenga en cuenta que los usuarios tendrán que eliminar todo el contenido de ese tipo antes de poder desinstalar el módulo.
En mi caso, el tipo de contenido se elimina al desinstalar el módulo. Pero no se aplica la eliminación del contenido personalizado (nodos). Para lograr esto, el módulo personalizado debe implementar el ModuleUninstallValidatorInterface
.
Cuando se implementa, el módulo personalizado no se puede desinstalar antes de que se eliminen los nodos personalizados. El cuadro de selección se desactivará.
En lugar de implementar la interfaz, lo estoy haciendo sucio al eliminar los nodos en hook_uninstall()
:
function MYMODULE_uninstall()
// Delete custom_type nodes when uninstalling.
$query = Drupal::entityQuery('node')
->condition('type', 'custom_type');
$nids = $query->execute();
// debug($nids);
foreach ($nids as $nid)
DrupalnodeEntityNode::load($nid)->delete();
Si piensas que ha resultado de provecho este artículo, sería de mucha ayuda si lo compartieras con el resto seniors y nos ayudes a difundir nuestro contenido.