Frage

Was ist der beste Weg, um ein Drupal 7 -Feld aus einem über die GUI definierten Inhaltstyp zu entfernen? Ich möchte Hook_UPDATE_N verwenden, damit die Änderungen beim Ausführen von Update.php an mehrere Server ausgegeben werden können. Ich kann jedoch keine Lösung finden. DB_DROP_TABLE () wäre für mich für benutzerdefinierte Schemas sinnvoll, jedoch nicht für einen in der GUI definierten Inhaltstyp/-feld.

War es hilfreich?

Lösung

Es gibt zwei API -Funktionen, um Felder zu löschen:

Wenn Sie das Feld nicht wiederverwenden möchten, ist es möglicherweise etwas sauberer, das gesamte Feld zu löschen, anstatt nur die Instanz des betreffenden Inhaltstyps zu löschen. Nur Sie können der Richter dafür sein.

Andere Tipps

Ja, field_delete_instance () ist die Funktion zum Löschen von Feldinstanzen.

Beachten Sie, dass field_delete_instance() automatisch Anrufe field_delete_field() Wenn es keine verbleibenden Instanzen gibt, also field_delete_instance() ist höchstwahrscheinlich alles, was Sie jemals brauchen.

_update_7000_field_delete_instance() ist für Kernaktualisierungsfunktionen entwickelt. Beispiel: In der Aktualisierungsfunktion x_update_7000(), du benutzt field_delete_instance(). Dann in x_update_7001(), du änderst die {field_config} Tabelle inkonsistent und field_delete_instance() Offensichtlich muss auch geändert werden.

Aber jetzt x_update_7000()'s rufen an field_delete_instance() würde zu einem Fehler führen, da sich die Tabelle noch in der alten Struktur befindet. Die Situation für beitragende Module ist jedoch unterschiedlich, da sie immer ausgeführt werden sollten nach Alle Kernupdates und müssen daher mit der neuesten Kernversion arbeiten.

Dies ist jedoch ein Muster, das Sie für Ihre eigenen API -Funktionen verwenden möchten, die Sie in Aktualisierungsfunktionen verwenden.

Darüber hinaus führen diese _UPDATE -Funktionen keine Haken aus, da das Ergebnis nicht vorhersehbar ist (zum Beispiel, weil das Modul, für das das Update ausgeführt wird, deaktiviert ist).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit drupal.stackexchange
scroll top