जवाबों:
उस (TM) के लिए एक मॉड्यूल है।
बल्क डिलीट देखें ।
नोड-डिलीट_मूल्टिटर () के लिए एक कॉल के साथ हजारों नोड्स को हटाने पर टाइमआउट या मेमोरी मुद्दों से बचने के लिए नोड्स को हटाने के लिए बैच एपीआई का उपयोग करेगा।
बल्क डिलीट एक परित्यक्त मॉड्यूल है। विकल्प के लिए देखें:
प्रेरणा के लिए देवल जनरेट मॉड्यूल को देखते हुए, यहां इसका "कंटेंट किल" फंक्शन है devel_generate_content_kill
:
function devel_generate_content_kill($values) { $results = db_select('node', 'n') ->fields('n', array('nid')) ->condition('type', $values['node_types'], 'IN') ->execute(); foreach ($results as $result) { $nids[] = $result->nid; } if (!empty($nids)) { node_delete_multiple($nids); drupal_set_message(t('Deleted %count nodes.', array('%count' => count($nids)))); } }
इसलिए मैं सभी नोड्स को हटाने के लिए या तो Devel Generate का उपयोग करने की कोशिश करूंगा लेकिन कोई नया नहीं बनाऊंगा या devel_generate_content_kill(array('node_types' => array('my_node_type')));
सीधे कॉल करने के लिए example.com/devel/php का उपयोग करूंगा ।
Drupal 8 में एक तरह से EntityStorageInterface :: हटाएं () विधि के साथ UnitQuery () विधि का उपयोग करें :
$result = \Drupal::entityQuery("node")
->condition("type", "YOUR_CONTENT_TYPE_NAME")
// If the update is being executed via drush entityQuery will only
// return the content uid 0 have access to. To return all set
// accessCheck to false since it defaults to TRUE.
->accessCheck(FALSE)
->execute();
$storage_handler = \Drupal::entityTypeManager()->getStorage("node");
$entities = $storage_handler->loadMultiple($result);
$storage_handler->delete($entities);
यदि आपको अन्य फ़िल्टर / शर्तें लागू करने की आवश्यकता है तो आप QueryInterface इंटरफ़ेस पृष्ठ की जांच कर सकते हैं
EDIT (अन्य तरीका, @ 4k4 के लिए धन्यवाद):
$storage_handler = \Drupal::entityTypeManager()->getStorage("node");
$entities = $storage_handler->loadByProperties(["type" => "YOUR_CONTENT_TYPE_NAME"]);
$storage_handler->delete($entities);
यदि आप उस कोड का परीक्षण करना चाहते हैं जिसका आप उपयोग कर सकते हैं:
drush php-eval '$storage_handler = \Drupal::entityTypeManager()->getStorage("node"); $entities = $storage_handler->loadByProperties(["type" => "article"]); $storage_handler->delete($entities);'
यह आपके सभी लेखों को हटा देगा।
$entities = $storage_handler->loadByProperties(['type' => 'YOUR_CONTENT_TYPE_NAME']);
entityQuery
हैं तो आपको accessCheck
बयान पर सेट करना चाहिए । अन्यथा यदि आप इसे ड्रश में चलाते हैं, तो डिफ़ॉल्ट रूप से एक्सेसचेक सही पर सेट होता है और किसी भी नोड जो uid 0 तक पहुंच नहीं है, वापस नहीं किया जाएगा।
यदि आप इसे विशुद्ध रूप से UI के माध्यम से करना चाहते हैं, तो आप devel_generate मॉड्यूल का उपयोग कर सकते हैं।
इस तरह, कोई नोड उत्पन्न नहीं होगी और चयनित प्रकार के सभी नोड हटा दिए जाएंगे।
ड्रुपल इंस्टॉलेशन की जड़ में नीचे कोड के साथ एक फ़ाइल बनाएं और फ़ाइल को निष्पादित करें।
<?php
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$aquery= db_query("SELECT nid FROM {node} AS n WHERE n.type = 'company'");
while ($row = db_fetch_object($aquery)) {
node_delete($row->nid);
}
?>
आप ऐसा कर सकते हैं कि ड्रुपल 7 में डेवेल मॉड्यूल के एक्ज़ीक्यूट PHP कोड भाग का उपयोग करके दर्ज किया गया है:
$result= db_query("SELECT nid FROM {node} AS n WHERE n.type = 'TYPE'");
foreach ($result as $record) {
node_delete($record->nid);
}
टर्मिनल में ऐसा करें, यदि आप ड्रश और डिलीट ऑल मॉड्यूल का उपयोग करते हैं:
drush delete-all [content-type-machine-name]
Examples:
drush delete-all article Delect all article nodes.
drush delete-all all Delete nodes of all types.
drush delete-all --reset Delete nodes of all types, and reset node, revision and comment counters.
drush delete-all users Delete users.
Options:
--reset Reset counter for node, revision and comment tables.
--roles pick roles
दृश्य बल्क ऑपरेशन एक बैच सक्षम, कॉन्फ़िगर करने योग्य नोड व्यवस्थापक स्क्रीन प्रदान करता है जो प्रकार से फ़िल्टर करने, आपके खोज मानदंडों से मेल खाने वाले सभी नोड्स का चयन, आदि की अनुमति देता है।
ड्रुपल 6 में मेरा हाथ से नीचे का समाधान है - बैच डिलीट के अलावा, आप नोड्स को थोक-संपादित कर सकते हैं और अन्य सामान का एक गुच्छा बना सकते हैं।
ऐसा लगता है कि ड्रुपल 7 संस्करण अभी तैयार नहीं है - लेकिन मैं उस मॉड्यूल को डी 7 रिलीज के लिए देख रहा हूं।
एक और स्निपेट है:
$query = db_query("SELECT n.nid FROM {node} n WHERE n.type = 'TO_BE_DELETED'");
while ($n = db_fetch_object($query))
{
node_delete($n->nid);
}
TO_BE_DELETED
सामग्री प्रकार कहां हटाया जाना है।
db_delete('node')
देवल मॉड्यूल के साथ, ड्रश का उपयोग:
drush genc 0 --types=article --kill
या यूआई में यहां बताया गया है: http://befused.com/drupal/delete-nodes-devel
devel_generate
जिसे सक्षम करने की आवश्यकता है। और कई प्रकारों के लिए यह हैdrush genc 0 --kill --types="article, page"
मैं सभी मॉड्यूल को हटाता हूं, यह D8 के साथ ठीक काम करता है और बहुत उपयोगी ड्रश कमांड प्रदान करता है। उदाहरण के लिए, article
सामग्री प्रकार की सभी सामग्री को हटाने के लिए :
drush delete-all article
यदि आपके पास माइग्रेट मॉड्यूल सक्षम है तो आप इसका उपयोग कर सकते हैं:
$ drush migrate-wipe <content-type>
इस मॉड्यूल का उपयोग किसी साइट से सभी सामग्री और / या उपयोगकर्ताओं को हटाने के लिए किया जाता है। यह मुख्य रूप से एक डेवलपर टूल है, जो कई मामलों में काम आ सकता है
https://www.drupal.org/project/delete_all
जैसा कि बल्क डिलीट मॉड्यूल बैच एपीआई का उपयोग करके एक निश्चित नोड-प्रकार के किसी भी नोड को हटा देगा। कम संख्या में नोड्स के लिए व्यू बैच ऑपरेशन मॉड्यूल (वीबीओ) का उपयोग करने की सलाह दी जाती है। लेकिन अगर आपको 10.000 नोड्स को हटाना है तो यह मॉड्यूल एक बेहतर विकल्प हो सकता है।
प्रोग्राम प्रकार के सभी नोड्स को हटाएं यहां एक सहायक कार्य है:
function _delete_all_nodes_of_type($type = '') {
// Return all nids of nodes of type.
$nids = db_select('node', 'n')
->fields('n', array('nid'))
->condition('n.type', $type)
->execute()
->fetchCol(); // returns an indexed array
if (!empty($nids)) {
node_delete_multiple($nids);
drupal_set_message(format_plural(count($nids), count($nids) . ' node Deleted.', count($nids) . ' nodes Deleted.'));
}
}
मैंने db_delete का उपयोग करते हुए समाप्त किया , किसी भी मॉड्यूल की आवश्यकता नहीं है:
<?php
db_delete('node')
->condition('type', 'MY_CONTENT_TYPE')
->execute();
?>
संपादित करें / चेतावनी: नीचे बर्दिर की टिप्पणी देखें। यह विधि नोड्स से संबंधित सभी डेटा को साफ नहीं करती है।
यदि आप कॉड नहीं करना चाहते हैं, तो आप इस मॉड्यूल की कोशिश कर सकते हैं, https://drupal.org/project/total_control
बस डैशबोर्ड पर जाएं -> सामग्री, सभी सामग्री का चयन करें (आप सामग्री प्रकार द्वारा फ़िल्टर कर सकते हैं), फिर "आइटम हटाएं" चुनें