вопрос
Удаление функции, которая создает тип содержимого, скрывает ссылку «Удалить» на admin/structure/types
.
Удаление функции, которая создает тип содержимого, скрывает ссылку «Удалить» на admin/structure/types
.
Ответы:
Использование hook_uninstall()
в файле FEATURE_NAME.install и изменение статуса типа контента, поэтому система считает, что это разблокированный пользовательский тип контента.
Я разместил это также на 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();
}
Это заставит кнопку «Удалить» появиться для этого типа контента, так что вы можете удалить ее от администратора.
Надеюсь, это поможет кому-то!
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
файл функции и удалить тип контента, затем он действительно удалился.
Вышеуказанный метод не удаляет таксономии, но этого можно достичь, добавив следующее после отключения и удаления модуля:
// 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);
}
Другое решение, которое работало для меня непосредственно в базе данных на моем сайте разработки. Не забывайте всегда делать резервную копию вашей базы данных.
Чтобы вручную удалить тип содержимого, созданный функцией # 16, Nedjo предлагает следующее:
- Отключить функцию. У меня иногда возникают проблемы с этим - функция не отключается. В этом случае удалите код функционального модуля.
- Определите имя компьютера для типа контента, который нужно удалить, например, «mytype».
- В базе данных верните значения таблицы node_type к значениям по умолчанию, как если бы тип контента создавался вручную через пользовательский интерфейс:
mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';
- Очистите кэши, чтобы обеспечить изменение типа контента.
- Через пользовательский интерфейс admin / structure / types удалите тип контента.
Если вы используете модуль admin_menu , вы все равно увидите ссылки удаления в выпадающем меню Структура / Типы контента / [имя типа контента] / Удалить, даже если они не отображаются на странице типов контента.
Я бы сказал, что довольно безопасно использовать эту ссылку для удаления, если вы уверены, что больше нет ссылок на этот тип контента.