Dlaczego nie mogę usunąć niektórych typów treści?


19

Mam witrynę Drupal 7 i w menu Typy treści tylko niektóre typy mają link „usuń” w kolumnie „Operacje”.

Wszystkie typy zawartości mają łącza do „edycji”, „zarządzania polami” i „zarządzania wyświetlaniem”, ale tylko niektóre mają „usuń”, a inne nie.

Sprawdziłem swoje uprawnienia dla mojego użytkownika i mam Administer content types- ale wydaje się, że jest to jedno globalne zezwolenie na wszystkie typy treści, więc nadal nie rozumiem, dlaczego niektóre można usunąć, a inne nie.

Dlaczego tylko niektóre typy zawartości mają operację usuwania?

Odpowiedzi:


15

Możesz usuwać tylko te typy treści, które są tworzone ręcznie (przez admin/structure/types/add).

Typy zawartości, które nie mają linku usuwania, są tworzone programowo przez zainstalowane moduły i zostaną usunięte po ich odinstalowaniu .


5
Jeśli ktoś nadal tu jest - mam typ zawartości, który został utworzony programowo, ale nadal krąży wokół mojej witryny, nawet po usunięciu wszystkich śladów z kodu witryny - nadal są na nią wpisy w {menu_links } i {menu_router} i tym podobne, więc nadal pojawia się w menu „Utwórz zawartość” i tym podobnych. Najwyraźniej coś się popsuło; czy jest jakiś dobry sposób, aby pozbyć się tego (hmm) bezpośredniego hakowania bazy danych, czego NAPRAWDĘ chciałbym nie robić?
Jim Miller

Mam ten sam problem. Na wielu stronach wyeksportowałem typ zawartości za pomocą funkcji i wyeksportowałem do innego. Teraz usunąłem powiązane moduły, ale typ zawartości wciąż tu jest.

3
Prawdopodobnie masz, ale tylko sprawdzasz - czy odinstalowałeś moduły, a także po prostu je wyłączyłeś ?
user56reinstatemonica8


Nie wiem, czy ta odpowiedź była wcześniej poprawna, ale z pewnością nie jest już poprawna w Drupal 7.23. Typy treści można usunąć, niezależnie od tego, jak zostały utworzone.
Kari Kääriäinen

30

Usuń je, przechodząc do adresu URL /admin/structure/types/manage/content-machine-name/delete

content-machine-name jest nazwą komputera typu zawartości, który chcesz usunąć. Upewnij się również, że w nazwie komputera używasz myślników, a nie podkreślników.


1
Wspaniale, działało to bardzo ładnie! Jakiś czas temu zainstalowałem Enterprise Blog i FAQ firmy, ale ostatecznie ich nie używałem. Ekran Typy treści nie dawał opcji usuwania tych typów zawartości, więc twoja metoda była mile widzianą ulgą!
hockey2112

1
Nie spodziewałem się, że to zadziała, ale działało pięknie. Idealne do usuwania typów zawartości dodawanych za pomocą modułu funkcji.
Citricguy

Tak! Ta wskazówka była niesamowita. Działa dobrze.
Boriana Ditcheva

To jest rzeczywiste rozwiązanie :)
petergus

Działa to jednak, jeśli link „usuń” nie pojawi się naturalnie, oznacza to, że usunięcie może nie być bezpieczne. Gdy nie będzie już żadnych typów zawartości, nie będzie żadnych zależności, nie będzie zawartości pamięci podręcznej oraz zmiennych i funkcji, które z niej korzystają, link się pojawi. Dlatego radzę używać tego ostrożnie.
Christia,

2

Jak wspomniano w hpn Możesz usuwać tylko te typy treści, które są tworzone ręcznie.

Ale czasami rzeczy nie idą gładko. Poniższe kroki pomogły usunąć typy zawartości. Musisz wykonać kopię zapasową bazy danych przed wypróbowaniem tego.

[Aby ręcznie usunąć typ zawartości, który został utworzony 1 # 16 Nedjo sugeruje w drupal.org:

  • Wyłącz tę funkcję. Czasami mam z tym problemy - funkcja się nie wyłącza. W takim przypadku usuń kod modułu funkcji.
  • Określ nazwę komputera typu zawartości, który chcesz usunąć, np. „Mój typ”.
  • W bazie danych przywróć wartości tabeli typ_węzła do wartości domyślnych, tak jakby typ zawartości został utworzony ręcznie za pomocą interfejsu użytkownika:

mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';

  • Wyczyść pamięć podręczną, aby zapewnić zmianę typu zawartości.
  • Za pomocą interfejsu użytkownika w admin / structure / types usuń typ zawartości.

Powyższe kroki pomogły mi wcześniej, gdy znalazłem te problemy.


1

Pierwszym krokiem powinno być wyłączenie modułu udostępniającego typ zawartości. Jeśli typ zawartości został udostępniony przez funkcję, nadal musisz usunąć typ zawartości.

W przypadku dobrze wykonanej funkcji możliwość usunięcia typu zawartości nastąpi po wyłączeniu tej funkcji. Jest to lepsze niż usuwanie typu zawartości spod funkcji, ponieważ bieżąca funkcjonalność lub przyszłe aktualizacje tej funkcji mogą wymagać typu zawartości.

Pamiętaj, że możesz wyłączyć moduły funkcji (admin / moduły), nawet jeśli interfejs funkcji twierdzi (dość głupio), że nie może wyłączyć modułu z powodu konfliktów.

A jeśli nie chcesz nic robić przez interfejs, a po prostu chcesz zrobić kod, oto przykład przechwytywania aktualizacji, który wyłączy Wiki Commons i funkcje postów, a następnie usunie dostarczone przez nich typy zawartości.

<?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');
}
?>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.