Vấn đề
Gỡ cài đặt một tính năng tạo loại nội dung sẽ ẩn liên kết "Xóa" trên admin/structure/types
.
Gỡ cài đặt một tính năng tạo loại nội dung sẽ ẩn liên kết "Xóa" trên admin/structure/types
.
Câu trả lời:
Sử dụng hook_uninstall()
tệp trong FEATURE_NAME.install và thay đổi trạng thái của loại nội dung, do đó hệ thống cho rằng đây là loại nội dung tùy chỉnh được mở khóa.
Tôi cũng đăng bài này trên 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();
}
Điều này sẽ làm cho nút "Xóa" xuất hiện cho loại nội dung đó, vì vậy bạn có thể xóa nó khỏi quản trị viên.
Hy vọng điều này sẽ giúp được ai đó!
node_type_delete($ctype);
sau khi truy vấn trong vòng lặp for.
mysql> UPDATE node_type SET custom = 1, locked = 0 WHERE type = '<content type machine name>';
Đối với tôi, giải pháp là tải trang xóa thủ công vì không có liên kết "xóa" trên trang loại nội dung. Để làm điều này, bạn chỉ cần tự xây dựng URL bằng cách làm theo cấu trúc URL giống như trang xóa cho các loại nội dung khác:
quản trị viên / cấu trúc / loại / quản lý / YOU_CONTENT_TYPE_MACHINE_NAME / xóa
Điều này đưa lên trang xác nhận xóa loại nội dung, sau đó cho phép tôi xóa loại nội dung.
Để tham khảo, xem chủ đề này trên Drupal.org:
https://drupal.org/node/1055460#comment-7297680
Trân trọng,
@cmsdave
.info
tệp của tính năng và xóa loại nội dung, sau đó nó sẽ thực sự xóa.
Phương pháp trên không xóa các nguyên tắc phân loại, nhưng điều này có thể đạt được bằng cách nối thêm các mục sau sau khi vô hiệu hóa và gỡ cài đặt mô-đun:
// 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);
}
Một giải pháp khác làm việc cho tôi trực tiếp đến cơ sở dữ liệu trong trang web phát triển của tôi. Hãy nhớ luôn luôn sao lưu cơ sở dữ liệu của bạn.
Để xóa thủ công một loại nội dung được tạo bởi tính năng # 16, điều mà Nedjo gợi ý là như sau:
- Vô hiệu hóa tính năng. Đôi khi tôi gặp vấn đề với điều này - một tính năng sẽ không vô hiệu hóa. Trong trường hợp này, loại bỏ mã mô-đun tính năng.
- Xác định tên máy của loại nội dung sẽ bị xóa, ví dụ: 'mytype'.
- Trong cơ sở dữ liệu, hoàn nguyên các giá trị bảng node_type về mặc định như thể kiểu nội dung được tạo thủ công thông qua UI:
mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';
- Xóa bộ nhớ cache để đảm bảo thay đổi loại nội dung có sẵn.
- Thông qua UI tại admin / cấu trúc / loại, xóa loại nội dung.
Nếu bạn sử dụng mô-đun admin_menu , bạn vẫn sẽ thấy các liên kết xóa trong menu kéo xuống Cấu trúc / Loại nội dung / [tên loại nội dung] / Xóa, ngay cả khi chúng không được hiển thị trên trang loại nội dung.
Tôi sẽ nói rằng nó khá an toàn để sử dụng liên kết xóa này nếu bạn đảm bảo không có tài liệu tham khảo nào khác cho loại nội dung này nữa.