Tại sao tôi không thể xóa một số loại nội dung nhất định?


19

Tôi có trang web Drupal 7 và trong menu Loại nội dung, chỉ một số loại nhất định có liên kết 'xóa' trong cột 'Hoạt động'.

Tất cả các loại nội dung đều có các liên kết cho 'chỉnh sửa', 'quản lý các trường' và 'quản lý hiển thị', nhưng chỉ một số loại có 'xóa', trong khi các loại khác thì không.

Tôi đã kiểm tra quyền của mình cho người dùng của mình và tôi có Administer content types- nhưng đó dường như là một quyền toàn cầu cho tất cả các loại nội dung, vì vậy tôi vẫn không hiểu tại sao một số lại bị xóa trong khi những người khác thì không.

Tại sao chỉ một số loại nội dung nhất định có thao tác xóa?

Câu trả lời:


15

Bạn chỉ có thể xóa các loại nội dung được tạo thủ công (thông qua admin/structure/types/add).

Các loại nội dung không có liên kết xóa được tạo lập trình bởi các mô-đun đã cài đặt và sẽ bị xóa sau khi bạn gỡ cài đặt chúng.


5
Trong trường hợp có ai đó vẫn ở đây - tôi có một loại nội dung được tạo theo chương trình, nhưng vẫn treo xung quanh trang web của tôi ngay cả khi tôi đã xóa tất cả dấu vết của nó khỏi mã của trang web - vẫn còn các mục nhập cho nó trong {menu_links } và {menu_router} và những thứ tương tự, vì vậy nó vẫn hiển thị trong menu "tạo nội dung" và những thứ tương tự. Một cái gì đó rõ ràng đã bị rối tung trên đường đi; Có cách nào tốt để thoát khỏi sự thiếu sót này (ugh) trực tiếp hack cơ sở dữ liệu, điều mà tôi thực sự muốn không làm?
Jim Miller

Tôi có cùng một vấn đề. Trên nhiều trang, tôi đã xuất một loại nội dung với sự trợ giúp của Tính năng và xuất sang loại khác. Bây giờ tôi đã loại bỏ các mô-đun liên quan nhưng loại nội dung vẫn còn ở đây.

3
Bạn có thể có, nhưng chỉ cần kiểm tra - bạn đã gỡ cài đặt các mô-đun cũng như chỉ cần vô hiệu hóa chúng?
user56reinstatemonica8


Tôi không biết câu trả lời này đã đúng trước đó chưa, nhưng chắc chắn nó không còn đúng nữa với Drupal 7.23. Các loại nội dung có thể bị xóa, bất kể chúng được tạo như thế nào.
Kari Kääriäinen

30

Xóa chúng bằng cách vào url /admin/structure/types/manage/content-machine-name/delete

tên máy nội dung là tên máy của loại nội dung bạn muốn xóa. Ngoài ra, hãy chắc chắn rằng bạn sử dụng dấu gạch ngang trong tên máy thay vì dấu gạch dưới.


1
Tuyệt vời, điều này làm việc rất độc đáo! Tôi đã cài đặt Enterprise Blog và Enterprise FAQ một lúc, nhưng cuối cùng không sử dụng chúng. Màn hình Loại Nội dung không cung cấp tùy chọn xóa các loại nội dung đó, vì vậy phương pháp của bạn là một sự giải thoát đáng hoan nghênh!
khúc côn cầu2112

1
Tôi không mong đợi nó hoạt động, nhưng nó hoạt động rất tốt. Tuyệt vời để xóa các loại nội dung được thêm bằng Mô-đun tính năng.
Citricguy

Vâng! Mẹo này thật tuyệt vời. Hoạt động tốt.
Boriana Ditcheva

Đây là giải pháp thực tế :)
petergus 8/2/2016

Tuy nhiên, điều này hoạt động nếu liên kết "xóa" không hiển thị một cách tự nhiên, điều đó có nghĩa là nó có thể không an toàn để xóa. Khi không có loại nội dung sử dụng nó, không phụ thuộc, không có nội dung được lưu trong bộ nhớ cache và các biến và tính năng đang sử dụng, liên kết sẽ hiển thị. Vì vậy, tôi khuyên bạn nên sử dụng điều này một cách thận trọng.
Christia

2

Như hpn đã đề cập Bạn chỉ có thể xóa các loại nội dung được tạo thủ công.

Nhưng đôi khi mọi thứ không diễn ra suôn sẻ. Các bước sau đây đã giúp xóa các loại nội dung. Bạn cần sao lưu cơ sở dữ liệu trước khi thử điều này.

[Để xóa thủ công một loại nội dung đã được tạo 1 # 16 Nedjo gợi ý trong drupal.org:

  • 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 giao diện người dùng tại admin / cấu trúc / loại, xóa loại nội dung.

Các bước trên là những gì nó đã giúp tôi trước đây khi tôi tìm thấy những vấn đề đó.


1

Vô hiệu hóa mô-đun cung cấp loại nội dung nên là bước đầu tiên. Nếu loại nội dung được cung cấp bởi một tính năng, bạn vẫn sẽ cần xóa loại nội dung.

Đối với một Tính năng được tạo tốt, khả năng xóa một loại nội dung sẽ xuất hiện sau khi Tính năng cung cấp tính năng đó bị vô hiệu hóa. Điều này được ưu tiên hơn là xóa một loại nội dung từ bên dưới một tính năng, vì chức năng hiện tại hoặc các bản cập nhật trong tương lai cho tính năng đó có thể yêu cầu loại nội dung.

Lưu ý rằng bạn có thể vô hiệu hóa các mô-đun tính năng (quản trị viên / mô-đun) ngay cả khi giao diện Tính năng (khá dại dột) cho rằng nó không thể vô hiệu hóa mô-đun vì xung đột.

Và nếu bạn không muốn làm bất cứ điều gì thông qua giao diện và chỉ muốn làm mã, thì đây là một ví dụ về một bản cập nhật sẽ vô hiệu hóa các tính năng của Commons Wiki và Bài viết, sau đó xóa các loại nội dung mà chúng cung cấp.

<?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');
}
?>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.