Alle Nodes eines Contenttyp löschen
dereine — 6. Mai 2008 - 20:05
Wie löscht man effektiv, schnell und einfach alle Nodes eines Contenttyps. Mit SQL kommt man nicht weit, da insbesondere bei CCK relativ schwer ist, zu wissen wo alle Daten stehen. Was nimmt man dann?
DELETE from {node} where type="abc"
Das löscht zwar die Existens für Drupal, aber viele Daten sind weiterhin gespeichert
Da war mir erst guter Rat teuer. Aber dann kam mir die Idee: node_delete($NID) und Views -> keinerlei SQL und flexibel
// Views Code
$view = new stdClass();
$view->name = 'deletetion';
$view->description = '';
$view->access = array (
);
$view->view_args_php = '';
$view->page = FALSE;
$view->page_title = '';
$view->page_header = '';
$view->page_header_format = '1';
$view->page_footer = '';
$view->page_footer_format = '1';
$view->page_empty = '';
$view->page_empty_format = '1';
$view->page_type = 'node';
$view->url = '';
$view->use_pager = TRUE;
$view->nodes_per_page = '10';
$view->sort = array (
);
$view->argument = array (
array (
'type' => 'nodetype',
'argdefault' => '1',
'title' => '',
'options' => '',
'wildcard' => '',
'wildcard_substitution' => '',
),
);
$view->field = array ();
$view->filter = array ();
$view->exposed_filter = array ();
$view->requires = array();
// mechanischer namen
$inhaltstyp = 'story';
// holt sich per sql alle nids
$result = views_build_view('items', $view, array($inhaltstyp), false, false);
// holt sich die nids aus dem result heraus
$items = $result['items'];
foreach ($items as $key => $item) {
$nids[] = $item->nid;
}
// zeigt nochmal alle nids
dsm($nids);
//////////////////////
// node_delete() //
// auskommentieren //
//////////////////////
foreach ($nids as $nid) {
//node_delete($nid);
}
?>
Die ersten Zeilen bauen die View, damit man nicht extra per GUI sich eine zusammenbauen muss.
$inhaltstyp definiert dann logischerweise den Inhaltstyp. Mithilfe von Views erhällt man dann alle NIDs, die man dann einfach per node_delete() löschen lässt.
-> Views ist nicht nur für die Anzeige von Daten da -> Views ist ein SQL Builder



Danke
Sebastian (nicht überprüft) — 9. Mai 2008 - 10:16nochmals für den Tip :)
Ist ein perfektes Beispiel wie Drupal "Werkzeuge" flexibel und effektiv eingesetzt werden können!
lg Sebastian
Währe schön gewesen auch
Anonymous (nicht überprüft) — 6. Juli 2008 - 20:25Währe schön gewesen auch mal genau zu beschreiben wie man das Skript einsetzt. (Standalone oder in ein PHP Feld kopieren)
Kommentar hinzufügen