Answers:
使用hook_uninstall()
FEATURE_NAME.install文件中的文件并更改内容类型的状态,因此系统认为它是未锁定的自定义内容类型。
<?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();
}
这将使该内容类型出现“删除”按钮,因此您可以从管理员中删除它。
希望这对某人有帮助!
node_type_delete($ctype);
,请在for循环中的查询后添加。
mysql> UPDATE node_type SET custom = 1, locked = 0 WHERE type = '<content type machine name>';
对我而言,解决方案是手动加载删除页面,因为内容类型页面上没有“删除”链接。为此,您只需要自己构建URL,就其他内容类型而言,遵循与删除页面相同的URL结构即可:
管理员/结构/类型/管理/ YOUR_CONTENT_TYPE_MACHINE_NAME /删除
这显示了内容类型删除确认页面,然后允许我删除内容类型。
作为参考,请参阅Drupal.org上的该线程:
https://drupal.org/node/1055460#comment-7297680
问候,
@cmsdave
.info
文件并删除内容类型,然后才将其删除。
另一种对我直接起作用的解决方案是开发站点中的数据库。切记始终备份数据库。
要手动删除功能 16 创建的内容类型,Nedjo建议以下内容:
- 禁用该功能。有时我会遇到一些问题-功能不会禁用。在这种情况下,请删除功能模块代码。
- 确定要删除的内容类型的机器名称,例如“ mytype”。
- 在数据库中,将node_type表的值还原为默认值,就好像通过UI手动创建内容类型一样:
mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';
- 清除缓存以确保内容类型更改可用。
- 通过位于admin / structure / types的UI,删除内容类型。
如果使用admin_menu模块,即使它们未显示在内容类型页面上,您仍将在下拉菜单“结构/内容类型/ [内容类型名称] /删除”中看到删除链接。
我要说的是,如果您确保不再有对此内容类型的其他引用,那么使用此删除链接是非常安全的。