Warum kann ich bestimmte Inhaltstypen nicht löschen?

19

Ich habe eine Drupal 7-Site und im Menü "Inhaltstypen" haben nur bestimmte Typen einen Link "Löschen" in der Spalte "Vorgänge".

Alle Inhaltstypen haben die Links für "Bearbeiten", "Felder verwalten" und "Anzeige verwalten", aber nur einige haben "Löschen", andere nicht.

Ich habe und habe meine Berechtigungen für meinen Benutzer überprüft. Administer content typesDies scheint jedoch eine globale Berechtigung für alle Inhaltstypen zu sein. Daher verstehe ich immer noch nicht, warum einige löschbar sind, während andere nicht.

Warum haben nur bestimmte Inhaltstypen einen Löschvorgang?

user1359
quelle

Antworten:

15

Sie können nur Inhaltstypen löschen, die manuell (über admin/structure/types/add) erstellt wurden.

Inhaltstypen ohne Löschverknüpfung werden programmgesteuert von installierten Modulen erstellt und nach der Deinstallation gelöscht .

hpn
quelle
5
Für den Fall, dass noch jemand hier ist - ich habe einen Inhaltstyp, der programmgesteuert erstellt wurde, aber immer noch auf meiner Site hängt, selbst nachdem ich alle Spuren davon aus dem Code der Site gelöscht habe -, gibt es in {menu_links noch Einträge dafür } und {menu_router} und dergleichen, so dass es weiterhin in Menüs und dergleichen zum Erstellen von Inhalten angezeigt wird. Offensichtlich ist etwas auf dem Weg durcheinander geraten; Gibt es eine gute Möglichkeit, dieses Problem zu lösen, indem man (ugh) direkt die Datenbank hackt, was ich WIRKLICH nicht tun möchte?
Jim Miller
Ich habe das gleiche Problem. Auf einer Multisite habe ich einen Inhaltstyp mithilfe von Features exportiert und in einen anderen exportiert. Jetzt habe ich die zugehörigen Module entfernt, aber der Inhaltstyp ist immer noch hier.
3
Sie haben wahrscheinlich, aber nur überprüft - haben Sie die Module deinstalliert und sie einfach deaktiviert ?
user56reinstatemonica8
2
Hier ist die Lösung .
Aram Boyajyan
Ich weiß nicht, ob diese Antwort früher richtig war, aber mit Drupal 7.23 ist sie sicherlich nicht mehr richtig. Inhaltstypen können unabhängig von ihrer Erstellung gelöscht werden.
Kari Kääriäinen
30

Löschen Sie sie, indem Sie zur URL gehen /admin/structure/types/manage/content-machine-name/delete

content-machine-name ist der Computername des Inhaltstyps, den Sie löschen möchten. Stellen Sie außerdem sicher, dass Sie Bindestriche im Computernamen und keine Unterstriche verwenden.

Brian Reeves
quelle
1
Super, das hat sehr gut funktioniert! Ich habe vor einiger Zeit Enterprise Blog und Enterprise FAQ installiert, habe sie jedoch nicht verwendet. Der Bildschirm "Inhaltstypen" enthielt keine Option zum Löschen dieser Inhaltstypen, daher war Ihre Methode eine willkommene Erleichterung!
Hockey2112
1
Ich hatte nicht damit gerechnet, aber es hat wunderbar funktioniert. Hervorragend zum Entfernen von Inhaltstypen, die mit dem Funktionsmodul hinzugefügt wurden.
Citricguy
Ja! Dieser Tipp war super. Funktioniert gut.
Boriana Ditcheva
Dies ist die eigentliche Lösung :)
Petergus
Dies funktioniert jedoch, wenn der Link "Löschen" nicht angezeigt wird. Dies bedeutet, dass das Löschen möglicherweise nicht sicher ist. Sobald es keine Inhaltstypen, keine Abhängigkeiten, keine zwischengespeicherten Inhalte und Variablen und Funktionen gibt, die es verwenden, wird der Link angezeigt. Daher rate ich, dies mit Vorsicht zu verwenden.
Christia
2

Wie bereits erwähnt, können Sie nur Inhaltstypen löschen, die manuell erstellt wurden.

Aber manchmal läuft es nicht rund. Die folgenden Schritte haben zum Löschen von Inhaltstypen beigetragen. Sie müssen die Datenbank sichern, bevor Sie dies versuchen.

[Um manuell einen Inhaltstyp löschen , die erstellt wurde 1 # 16 Nedjo schlägt vor , in drupal.org:

  • Deaktivieren Sie die Funktion. Ich habe manchmal Probleme damit - eine Funktion wird nicht deaktiviert. Entfernen Sie in diesem Fall den Funktionsmodulcode.
  • Ermitteln Sie den Computernamen des zu löschenden Inhaltstyps, z. B. "MeinTyp".
  • Setzen Sie in der Datenbank die Werte der Tabelle "node_type" auf die Standardwerte zurück, als ob der Inhaltstyp manuell über die Benutzeroberfläche erstellt worden wäre:

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

  • Löschen Sie die Caches, um sicherzustellen, dass die Änderung des Inhaltstyps verfügbar ist.
  • Löschen Sie über die Benutzeroberfläche unter admin / structure / types den Inhaltstyp.

Die obigen Schritte haben mir schon geholfen, als ich diese Probleme gefunden habe.

Cayerdis
quelle
1

Das Deaktivieren des Moduls, das den Inhaltstyp bereitstellt, sollte der erste Schritt sein. Wenn der Inhaltstyp von einer Funktion bereitgestellt wurde, müssen Sie den Inhaltstyp dennoch löschen.

Für ein gut gemachtes Feature wird die Möglichkeit, einen Inhaltstyp zu löschen, nach dem Feature bereitgestellt, sofern es deaktiviert ist. Dies ist dem Löschen eines Inhaltstyps aus einem Feature vorzuziehen, da die aktuelle Funktionalität oder zukünftige Aktualisierungen dieses Features möglicherweise den Inhaltstyp erfordern.

Beachten Sie, dass Sie Feature-Module (admin / modules) deaktivieren können, auch wenn die Features-Oberfläche (ziemlich dumm) behauptet, dass sie ein Modul aufgrund von Konflikten nicht deaktivieren kann.

Und wenn Sie über die Benutzeroberfläche nichts tun und nur Code ausführen möchten, finden Sie hier ein Beispiel für einen Update-Hook, mit dem die Funktionen von Commons Wiki und Posts deaktiviert und die von ihnen bereitgestellten Inhaltstypen gelöscht werden.

<?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');
}
?>
mlncn
quelle