Yanıtlar:
Bunun için bir modül var (TM).
Toplu Silme bölümüne bakınız .
Bu, tek bir çağrı ile binlerce düğümü node_delete_multiple () ile silerken zaman aşımı veya bellek sorunlarını önlemek için düğümleri silmek için Toplu İş API'sini kullanır.
Toplu Silme terk edilmiş bir modüldür. Alternatifler için bakınız:
Devel Generation modülüne ilham için baktığımızda, burada "içerik öldürme" işlevi 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)))); } }
Bu yüzden ya tüm düğümleri silmek için Devel Generate kullanarak ya da yeni bir tane yaratmadan ya da devel_generate_content_kill(array('node_types' => array('my_node_type')));
doğrudan çağırmak için example.com/devel/php adresini kullanmaya çalışacağım .
Drupal 8'de bir yol, entityQuery () yöntemini EntityStorageInterface :: delete () yöntemiyle kullanmaktır:
$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);
Başka filtreler / koşullar uygulamanız gerekiyorsa, QueryInterface arayüz sayfasını kontrol edebilirsiniz.
EDIT ( @ 4k4 sayesinde diğer şekilde):
$storage_handler = \Drupal::entityTypeManager()->getStorage("node");
$entities = $storage_handler->loadByProperties(["type" => "YOUR_CONTENT_TYPE_NAME"]);
$storage_handler->delete($entities);
Kodu test etmek istiyorsanız kullanabilirsiniz:
drush php-eval '$storage_handler = \Drupal::entityTypeManager()->getStorage("node"); $entities = $storage_handler->loadByProperties(["type" => "article"]); $storage_handler->delete($entities);'
Bu, tüm makalelerinizi siler.
$entities = $storage_handler->loadByProperties(['type' => 'YOUR_CONTENT_TYPE_NAME']);
entityQuery
ayarlamanız gerektiği konusunda accessCheck
ekstresinde. Aksi takdirde, sık sık çalıştırırsanız, varsayılan olarak accessCheck true olarak ayarlanır ve 0 kullanıcı kimliğine erişimi olmayan tüm düğümler döndürülmez.
Tamamen kullanıcı arayüzü aracılığıyla yapmak istiyorsanız devel_generate modülünü kullanabilirsiniz.
Bu şekilde, hiçbir düğüm oluşturulmayacak ve seçilen türlerin tüm düğümleri silinecektir.
Drupal kurulumun kök dizininde aşağıdaki kodla bir dosya oluşturun ve dosyayı yürütün.
<?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);
}
?>
Bunu, Devel modülünün PHP Kodunu Çalıştır kısmını kullanarak Drupal 7'de yapabilirsiniz:
$result= db_query("SELECT nid FROM {node} AS n WHERE n.type = 'TYPE'");
foreach ($result as $record) {
node_delete($record->nid);
}
Drush kullanıyorsanız ve tüm modülü sildiyseniz, bunu terminalde yapın:
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
Toplu işlemleri görüntüleme, türüne göre filtreleme, arama kriterlerinize uyan tüm düğümlerin seçilmesi vb.
Bu benim Drupal 6'daki uygulamalı çözümüm - toplu silme işleminin yanı sıra, düğümleri toplu olarak düzenleyebilir ve başka birçok şey yapabilirsiniz.
Drupal 7 versiyonu henüz hazır değil gibi görünüyor - fakat D7 sürümü için bu modülü izliyordum.
Başka bir pasaj:
$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
silinecek içerik türü nerede .
db_delete('node')
Devel modülüyle sarhoş kullanarak:
drush genc 0 --types=article --kill
Veya burada açıklandığı gibi UI'de: http://befused.com/drupal/delete-nodes-devel
devel_generate
Etkinleştirilmesi gereken Devel alt modülü . Ve birden türleri için bu kadardrush genc 0 --kill --types="article, page"
Tüm modülü sil kullanıyorum , D8 ile iyi çalışıyor ve çok kullanışlı sarhoş komutları sağlıyor. Örneğin, article
içerik türünün tüm içeriğini silmek için :
drush delete-all article
Deneyebilirsin Tümünü sil , modül gezinmek için 'Yönetici / içerik / DELETE_CONTENT' ve belirli içerik türlerine ait içeriğin silinmesi için bir form ile sunulacak.
Saygılarımızla
Migrate modülünü etkinleştirdiyseniz, şunları kullanabilirsiniz:
$ drush migrate-wipe <content-type>
Bu modül bir sitedeki tüm içeriği ve / veya kullanıcıları silmek için kullanılır. Bu, esas olarak, bazı durumlarda kullanışlı olabilecek bir geliştirici aracıdır.
https://www.drupal.org/project/delete_all
Toplu Silme modülünün toplu api'yi kullanarak belirli bir düğüm tipindeki düğümleri sileceği gibi. Az sayıda düğüm için Görüntüleme Toplu İşlemleri modülünün (VBO) kullanılması önerilir. Ancak 10.000 düğümü silmeniz gerekirse, bu modül daha iyi bir seçenek olabilir.
İçerik türündeki tüm düğümleri programlı olarak silme burada yardımcı bir işlevdir:
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 kullanarak sona erdi , modül gerektirmiyor:
<?php
db_delete('node')
->condition('type', 'MY_CONTENT_TYPE')
->execute();
?>
Düzenleme / Uyarı: Aşağıdaki Berdir'in yorumuna bakın. Bu yöntem, düğümlerle ilgili tüm verileri temizlemez.
Kodlamak istemiyorsanız, bu modülü deneyebilirsiniz, https://drupal.org/project/total_control
Yalnızca Gösterge Tablosu -> İçerik seçeneğine gidin, tüm içeriği seçin (içerik türüne göre filtreleyebilirsiniz), ardından "Öğeyi sil" i seçin