Как удалить тип контента, созданный с помощью функций
Я пытался использовать функцию проекта из дистрибутива на основе функций openAid. Поэтому я скопировал все функции из этого дистрибутива и потребовал дополнительных и пользовательских модулей в своей установке drupal.
Затем я включаю функцию проекта от администратора/структуры/функций, которая включает несколько других функций, таких как ресурсы и партнеры.
Каким-либо образом я не смог заставить его работать в соответствии с моими требованиями, поэтому я удалил все три папки, включая функции, дополнительные и пользовательские модули.
Но проблема в том, что он создал три типа контента: Проект, Партнеры и нет возможности их удалить.
Пожалуйста, дайте мне знать, есть ли способ удалить те типы контента, которые были созданы с помощью функций, которые я уже удалил.
5 answers
Вы можете попробовать следующий код для получения ссылки на удаление (как мы получаем ссылку на удаление для созданных вручную типов контента) для типов контента, созданных модулем функций:
<?php
/**
* Implements hook_uninstall().
*/
function FEATURE_NAME_uninstall() {
// List custom content types added by this feature.
$custom_ctypes = array(
'CONTENT_TYPE1',
'CONTENT_TYPE2',
);
// Loop 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();
}
?>
После выполнения описанного выше сценария вы получите ссылку "удалить", как мы получаем для созданного вручную типа контента, и затем вы можете удалить тип контента (созданный модулем функций) из самого пользовательского интерфейса.
Еще один простой способ удалить тип контента: вручную перейдите к /admin/structure/types/manage/"CONTENT_TYPE_NAME"/delete
, он будет удалите его
Ссылка: https://drupal.org/node/1055460
Откройте тип контента (например: статья) для редактирования, который должен привести вас к URL-адресу:
Администратор/структура/типы/управление/статья
Затем вы можете добавить "/удалить" в URL-адрес следующим образом:
Администратор/структура/типы/управление/статья/удалить
, который должен открыть форму, которая позволит вам удалить тип контента. Я не знаю, позволяет ли это удалять те, которые поступают из пакета активных функций, но это определенно поможет вам удалите устаревшие типы контента из неактивных пакетов функций. Так что будьте осторожны
К вашему сведению, если вы делаете это для нескольких типов контента, не открывайте все формы удаления на нескольких вкладках и старайтесь быть умным, удаляя несколько типов одновременно. Будут происходить плохие вещи: - p Создавайте резервную копию и удаляйте по одному типу контента за раз.
Если у вас установлен devel, перейдите в /devel/php, а затем node_type_delete($type), где $type - имя компьютера для типа контента.
Вы должны выполнять функцию независимо от того, где, поэтому разработка не требуется, но да будет на шаг меньше, чтобы иметь ее.
Вместо того, чтобы пытаться сделать это по своему усмотрению, вы можете снова установить модуль функций, а затем сначала отключить модуль через терминал с помощью
Имя модуля Drush dis
, А затем удалите модуль с помощью
Drush pm-имя модуля удаления
Это поможет вам удалить все записи, созданные модулем функций в вашей базе данных.
Самое простое, что можно сделать (я думаю), это использовать модуль admin_menu (https://www.drupal.org/project/admin_menu ). Я уже использую это на большинстве своих сайтов, так что для меня это не дополнительный шаг.
С включенным admin_menu вы можете просто навести курсор на структуру > типы контента> любой тип, и появится ссылка удалить.
Я только что проверил это, переместив тип контента и представление с одного сайта на другой с помощью функций. Отключил функцию, но тип контента был все еще там, без ссылки на удаление. Использовал меню администратора для удаления типа контента. Сработало отлично.