为什么我不能删除某些内容类型?


19

我有一个Drupal 7网站,在“内容类型”菜单下,只有某些类型在“操作”列下具有“删除”链接。

所有内容类型都有“编辑”,“管理字段”和“管理显示”的链接,但是只有一些具有“删除”,而其他则没有。

我检查了我对用户的权限,Administer content types但确实拥有了-但这似乎是所有内容类型的全局权限,因此我仍然不明白为什么某些可删除而其他不可删除的原因。

为什么只有某些内容类型具有删除操作?

Answers:


15

您只能删除(通过admin/structure/types/add)手动创建的内容类型。

没有删除链接的内容类型由安装的模块以编程方式创建,并且在卸载它们后将被删除。


5
如果有人还在这里-我有一个通过编程方式创建的内容类型,但是即使我从网站的代码中删除了所有痕迹后,它仍然在我的网站周围徘徊-{menu_links }和{menu_router}等,因此它仍显示在“创建内容”菜单等中。一路上显然有些混乱。有什么好方法可以摆脱这种(ugh)直接入侵数据库的问题,我真的不想这么做吗?
Jim Miller

我也有同样的问题。在多站点上,我借助“功能”导出了一种内容类型,然后又导出到了另一种类型。现在,我删除了相关模块,但内容类型仍在此处。

3
您可能已经有了,但只是进行了检查-您是否已卸载了模块并仅禁用了它们?
user56reinstatemonica8 2012年


我不知道这个答案之前是否正确,但是对于Drupal 7.23来说肯定不再正确。内容类型可以删除,无论它们是如何创建的。
KariKääriäinen13年

30

通过转到网址删除它们 /admin/structure/types/manage/content-machine-name/delete

content-machine-name是您要删除的内容类型的机器名称。另外,请确保在计算机名称中使用破折号而不是下划线。


1
太棒了,这非常好用!我之前安装了Enterprise Blog和Enterprise FAQ,但最终没有使用它们。“内容类型”屏幕没有提供删除这些内容类型的选项,因此您的方法令人欣慰!
hockey2112

1
我没想到这会起作用,但是效果很好。非常适合删除使用功能模块添加的内容类型。
Citricguy

是的 这个技巧很棒。效果很好。
Boriana Ditcheva 2014年

这是实际的解决方案:)
petergus '16

这是可行的,但是,如果“删除”链接没有自然显示出来,则意味着删除它可能并不安全。一旦没有使用任何内容类型,没有依赖项,没有缓存的内容以及正在使用它的变量和功能,该链接就会显示出来。因此,我建议谨慎使用。
Christia

2

如hpn所述,您只能删除手动创建的内容类型。

但是有时候事情进展并不顺利。以下步骤有助于删除内容类型。您需要先备份数据库,然后再尝试此操作。

[要手动删除已创建的内容类型1#16 Nedjo建议在drupal.org中:

  • 禁用该功能。有时我会遇到一些问题-功能不会禁用。在这种情况下,请删除功能模块代码。
  • 确定要删除的内容类型的机器名称,例如“ mytype”。
  • 在数据库中,将node_type表的值还原为默认值,就好像通过UI手动创建内容类型一样:

mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';

  • 清除缓存以确保内容类型更改可用。
  • 通过位于admin / structure / types的UI,删除内容类型。

在发现这些问题之前,上述步骤对我有帮助。


1

禁用提供内容类型的模块应该是第一步。如果内容类型是由功能提供的,则仍然需要删除该内容类型。

对于功能完善的功能部件,如果禁用了该内容类型,则可以删除该内容类型。这优于从功能部件下删除内容类型,因为当前功能或对该功能部件的将来更新可能需要该内容类型。

请注意,即使“功能”界面((愚蠢地)声称由于冲突而无法禁用模块)也可以禁用功能模块(管理员/模块)。

而且,如果您不想通过该界面执行任何操作,而只想编写代码,那么下面是一个更新挂钩示例,该挂钩将禁用Commons Wiki和Posts功能,然后删除它们提供的内容类型。

<?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');
}
?>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.