Questão
A desinstalação de um recurso que cria um tipo de conteúdo oculta o link "Excluir" no admin/structure/types
.
A desinstalação de um recurso que cria um tipo de conteúdo oculta o link "Excluir" no admin/structure/types
.
Respostas:
Usando um hook_uninstall()
arquivo FEATURE_NAME.install e alterando o status do tipo de conteúdo, para que o sistema pense que é um tipo de conteúdo personalizado e desbloqueado.
Eu postei isso também no d.org .
<?php
/**
* Implements hook_uninstall().
*/
function FEATURE_NAME_uninstall() {
// List custom content types added by this feature
$custom_ctypes = array(
'blog',
);
// Go through each and unlock the content type
foreach ($custom_ctypes as $ctype) {
db_query("UPDATE {node_type} SET `custom` = 1, locked = 0 WHERE type = :ctype", array(':ctype' => $ctype));
}
// Clean Drupal cache; this is necessary for the "Delete" link to appear
// next to the content type created by the feature.
drupal_flush_all_caches();
}
Isso fará com que o botão "Excluir" apareça para esse tipo de conteúdo, para que você possa excluí-lo do administrador.
Espero que isso ajude alguém!
node_type_delete($ctype);
após a consulta no loop for.
mysql> UPDATE node_type SET custom = 1, locked = 0 WHERE type = '<content type machine name>';
Para mim, a solução foi carregar a página de exclusão manualmente, pois não há um link "excluir" na página de tipos de conteúdo. Para fazer isso, você só precisa criar o URL seguindo a mesma estrutura de URL que a página de exclusão para outros tipos de conteúdo:
admin / estrutura / tipos / gerenciar / YOUR_CONTENT_TYPE_MACHINE_NAME / delete
Isso exibiu a página de confirmação de exclusão do tipo de conteúdo, que me permitiu excluir o tipo de conteúdo.
Para referência, consulte este tópico no Drupal.org:
https://drupal.org/node/1055460#comment-7297680
Saudações,
@cmsdave
.info
arquivo do recurso e remover o tipo de conteúdo, e ele realmente foi excluído.
O método acima não exclui taxonomias, mas isso pode ser alcançado anexando o seguinte após desativar e desinstalar o módulo:
// Delete taxonomies.
$machine_names = array('taxonomy_a', 'taxonomy_b');
foreach ($machine_names as $machine_name) {
$taxonomy = taxonomy_vocabulary_machine_name_load($machine_name);
taxonomy_vocabulary_delete($taxonomy->vid);
}
Outra solução que funcionou para mim diretamente no banco de dados no meu site de desenvolvimento. Lembre-se de sempre fazer backup do seu banco de dados.
Para excluir manualmente um tipo de conteúdo criado por um recurso # 16, o que o Nedjo sugere é o seguinte:
- Desative o recurso. Às vezes, tenho problemas com isso - um recurso não desativa. Nesse caso, remova o código do módulo de recurso.
- Determine o nome da máquina do tipo de conteúdo a ser excluído, por exemplo, 'mytype'.
- No banco de dados, reverta os valores da tabela node_type para os padrões como se o tipo de conteúdo fosse criado manualmente por meio da interface do usuário:
mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';
- Limpe os caches para garantir que a alteração do tipo de conteúdo esteja disponível.
- Por meio da interface do usuário em admin / structure / types, exclua o tipo de conteúdo.
Se você usar o módulo admin_menu , ainda verá os links para exclusão no menu suspenso Estrutura / Tipos de conteúdo / [nome do tipo de conteúdo] / Excluir, mesmo que eles não sejam exibidos na página de tipos de conteúdo.
Eu diria que é bastante seguro usar esse link de exclusão se você garantir que não há mais outras referências a esse tipo de conteúdo.