Por que não consigo excluir certos tipos de conteúdo?


19

Eu tenho um site Drupal 7 e, no menu Tipos de conteúdo, apenas certos tipos têm um link 'excluir' na coluna 'Operações'.

Todos os tipos de conteúdo têm os links para 'editar', 'gerenciar campos' e 'gerenciar exibição', mas apenas alguns têm 'excluir', enquanto outros não.

Eu verifiquei minhas permissões para o meu usuário e tenho Administer content types- mas essa parece ser uma permissão global para todos os tipos de conteúdo, por isso ainda não entendo por que algumas são deletáveis, enquanto outras não.

Por que apenas certos tipos de conteúdo têm uma operação de exclusão?

Respostas:


15

Você pode excluir apenas os tipos de conteúdo criados manualmente (via admin/structure/types/add).

Os tipos de conteúdo que não possuem um link de exclusão são criados programaticamente pelos módulos instalados e serão excluídos após a desinstalação .


5
Caso alguém ainda esteja aqui - eu tenho um tipo de conteúdo que foi criado programaticamente, mas ainda permanece no meu site mesmo depois de excluir todos os vestígios do código do site - ainda existem entradas para ele em {menu_links } e {menu_router} e similares, por isso ainda é exibido nos menus "criar conteúdo" e similares. Evidentemente, algo ficou bagunçado ao longo do caminho; existe alguma boa maneira de se livrar dessa falta de (ugh) invadir diretamente o banco de dados, o que eu realmente gostaria de não fazer?
Jim Miller

Eu tenho o mesmo problema. Em um multisite, eu exportei um tipo de conteúdo com a ajuda de Recursos e exportei para outro. Agora eu removi os módulos relacionados, mas o tipo de conteúdo ainda está aqui.

3
Você provavelmente tem, mas apenas verificando - você desinstalou os módulos e simplesmente desabilitou- os?
precisa saber é o seguinte


Não sei se essa resposta foi correta anteriormente, mas certamente não está mais correta com o Drupal 7.23. Os tipos de conteúdo podem ser excluídos, independentemente de como eles foram criados.
Kari Kääriäinen

30

Exclua-os acessando o URL /admin/structure/types/manage/content-machine-name/delete

content-machine-name sendo o nome da máquina do tipo de conteúdo que você deseja excluir. Além disso, certifique-se de usar traços no nome da máquina em vez de sublinhados.


1
Incrível, isso funcionou muito bem! Instalei o Enterprise Blog e o Enterprise FAQ há algum tempo, mas acabei não os usando. A tela Tipos de conteúdo não ofereceu uma opção para excluir esses tipos de conteúdo; portanto, seu método foi um alívio bem-vindo!
Hockey2112 11/03/2013

1
Eu não esperava que isso funcionasse, mas funcionou lindamente. Ótimo para remover tipos de conteúdo adicionados usando o Módulo de Recursos.
precisa saber é

Sim! Essa dica foi incrível. Funciona bem.
Boriana Ditcheva

Esta é a solução real :)
petergus

Isso funciona, no entanto, se o link "excluir" não aparecer naturalmente, significa que talvez não seja seguro excluir. Quando não houver tipos de conteúdo usando-o, dependências, conteúdo em cache e variáveis ​​e recursos que o estejam usando, o link será exibido. Portanto, aconselho a usar isso com cautela.
Christia

2

Como hpn mencionado, você pode excluir apenas os tipos de conteúdo criados manualmente.

Mas, às vezes, as coisas não correm bem. As etapas a seguir ajudaram a excluir os tipos de conteúdo. Você precisa fazer backup do banco de dados antes de tentar isso.

[Para excluir manualmente um tipo de conteúdo criado 1 # 16 Nedjo sugere em drupal.org:

  • 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.

As etapas acima são o que me ajudou antes quando encontrei esses problemas.


1

Desabilitar o módulo que fornece o tipo de conteúdo deve ser a primeira etapa. Se o tipo de conteúdo foi fornecido por um recurso, você ainda precisará excluir o tipo de conteúdo.

Para um Recurso bem fabricado, a capacidade de excluir um tipo de conteúdo ocorrerá após o Recurso, desde que ele esteja desativado. É preferível excluir um tipo de conteúdo de um recurso, pois a funcionalidade atual ou futuras atualizações para esse recurso podem exigir o tipo de conteúdo.

Observe que você pode desativar os módulos de recursos (admin / modules), mesmo quando a interface de Recursos afirma (de maneira tola) que não pode desativar um módulo devido a conflitos.

E se você não quiser fazer nada por meio da interface e apenas quiser fazer código, aqui está um exemplo de um gancho de atualização que desabilitará o Wiki Commons e os Recursos de Posts e excluirá os tipos de conteúdo que eles fornecem.

<?php
/**
 * Remove unused features and content types.
 */
function example_update_7001() {
  // Delete one (spam) piece of wiki content.
  node_delete(2731);
  // Disable Feature modules.
  module_disable(array('commons_wikis_pages', 'commons_wikis', 'commons_posts'));
  // Delete content types.
  node_type_delete('wiki');
  node_type_delete('post');
}
?>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.