शब्दावली (बल्क डिलीट) से सभी शब्द कैसे हटाएं?


10

मेरे पास एक बड़ी शब्दावली है, और व्यवस्थापक विचार अभी तक वर्गीकरण के लिए काम नहीं करते हैं। टैक्सोनॉमी मैनेजर ऐसा नहीं करता है। क्या थोक अवधि हटाने के लिए कोई विकल्प हैं?

जवाबों:


15

टैक्सोनॉमी मैनेजर में बल्क डिलीट फंक्शनलिटी है, बस अपनी शब्दावली के सभी शब्दों को चुनें और 'डिलीट' बटन पर क्लिक करें:

यहाँ छवि विवरण दर्ज करें

यदि आप इसे कोड का उपयोग करके करना चाहते हैं, तो निम्नलिखित में से कुछ की मदद करनी चाहिए:

$vocabulary = taxonomy_vocabulary_machine_name_load('my_custom_vocabulary');
foreach (taxonomy_get_tree($vocabulary->vid) as $term) {
  taxonomy_term_delete($term->tid);
}

ठीक है धन्यवाद, हालांकि टैक्सो प्रबंधक के पास एक थोक चयन विकल्प नहीं है, और यदि आपके पास सैकड़ों शर्तें हैं, तो आपको एक-एक करके सभी की जांच करनी होगी।
जियोर्जियो79

हाँ है कि वास्तव में कष्टप्रद की तरह है, मैं उस के लिए एक सुविधा का अनुरोध में डाल सकता है
क्लाइव

2
UI और कोड दोनों विधियों को जोड़ने के लिए धन्यवाद! हमेशा बहुत उपयोगी +1
मैट फ्लेचर

5
@ giorgio79 अधिकांश आधुनिक ब्राउज़र Shift + चेकबॉक्स पर क्लिक करने का समर्थन करते हैं। यदि आप एक चेकबॉक्स पर क्लिक करते हैं, तो Shift + उसी समूह में किसी अन्य चेकबॉक्स पर क्लिक करें, उन 2 के बीच के सभी चेकबॉक्स चयनित / अचयनित होंगे।
Елин Й

26

सामग्री प्रकार, टैक्सोनॉमी शब्दावली आदि द्वारा बल्क-डिलीटिंग कंटेंट की एक पसंदीदा विधि http://drupal.org/project/devel मॉड्यूल का उपयोग करती है । किसी शब्दावली में सभी शब्द हटाने के लिए:

  1. डेवेल और डेवेल जनरेट मॉड्यूल को सक्षम करें
  2. डेवलपमेंट> जनरेट टर्म्स पर जाएं
  3. उस शब्दावली का चयन करें जिसमें से आप शर्तों को हटाना चाहते हैं
  4. उत्पन्न करने के लिए शर्तों की संख्या के लिए "0" दर्ज करें
  5. "नया बनाने से पहले मौजूदा शब्द हटाएं" जांचें
  6. सबमिट पर क्लिक करें

वोइला-- खाली शब्दावली, अन्यथा अछूती।


मॉड्यूल कहा जाता है: डेवेल जनरेट
केनोरब

6

आप निम्न आदेश का उपयोग कर सकते हैं:

drush -v eval 'foreach(taxonomy_get_tree(123) as $term) { taxonomy_term_delete($term->tid); }'

यदि यह काम नहीं करता है, तो सुनिश्चित करें कि आप अपना कैश (जैसे मेमेकैच्ड) साफ कर दें।

या निम्न गंदे SQL क्वेरी का उपयोग करके तेज़ तरीका:

drush sqlq "DELETE FROM taxonomy_term_data WHERE vid = 123"

जहां 123 आपकी शब्दावली आईडी है जिसे आपको बदलना चाहिए।

आप vidनिम्नलिखित कमांड द्वारा अपनी शब्दावली का नाम प्राप्त कर सकते हैं :

drush sqlq "SELECT name, vid FROM taxonomy_vocabulary WHERE name = 'vocabulary_name'"

यह सभी देखें:


1
यह खूबसूरती से बस काम करता है :-)
एलेजांद्रो मोरेनो

1
बहुत बढ़िया जवाब! आप अधिक उत्थान के लायक हैं!
लॉटरो रोजेल्स

1
आप दोनों को जोड़ भी सकते हैं, अगर आपको डर लग रहा हो: drush sqlq "DELETE FROM taxonomy_term_data WHERE vid = (SELECT vid FROM taxonomy_vocabulary WHERE name = 'vocabulary_name')"
Kirkland

2

व्यवस्थापन दृश्य बस पूर्वनिर्मित वीबीओ दृश्य प्रदान करता है। VBO स्वयं शर्तों (या किसी अन्य इकाई प्रकार) के साथ ठीक काम करता है, VBO को स्वयं स्थापित करें और वह दृश्य बनाएँ जो आप चाहते हैं, फिर शर्तों को हटाने के लिए VBO का उपयोग करें।


2

Drupal 7 में एक शब्दावली के भीतर सभी टैक्सोनॉमी शर्तों को हटाने के लिए, taxonomy_term_deleteसभी शर्तों को पूरा करके फ़ंक्शन का उपयोग करें ।

निम्नलिखित उदाहरण पर विचार करें:

// Get metadata about the vocabulary from its machine name
$vocab = taxonomy_vocabulary_machine_name_load('TAXONOMY_MACHINE_NAME');

// Get a hierarchical representation of all terms
$terms = taxonomy_get_tree($vocab->vid);

// Loop thru all terms in the taxonomy, deleting each one
if (!empty($terms)) {
  foreach ($terms as $term) {
    taxonomy_term_delete($term->tid);
  }
}

इससे भी आसान, यदि आपके पास ड्रश और डेवेल मॉड्यूल स्थापित है, तो आप अपने शेल के आराम से * टैक्सोनॉमी * में सभी शर्तों को हटाने के लिए निम्न कमांड का उपयोग कर सकते हैं:

$ drush generate-terms TAXONOMY_MACHINE_NAME 0 --kill

* यह माना जाता है कि आपके पास देवल जनरेट मॉड्यूल सक्षम है, जिसे जरूरत पड़ने पर किया जा सकता है:

$ drush en -y devel && drush en -y devel_generate


ड्रश जेनरेट-टर्म्स के लिए धन्यवाद क्योंकि यह UI से उपयोग किए जाने पर
उड़

1

मैं टैक्स व्यू शर्तों के डिफ़ॉल्ट प्रदर्शन को बदलने के लिए एक दृश्य प्राप्त करने के लिए VBO के साथ व्यवस्थापक दृश्यों का उपयोग करने की सलाह दूंगा

आपको जो करना है वह निम्नलिखित है:

  1. उन मॉड्यूल को सक्षम करें
  2. "प्रशासन: वर्गीकरण शब्द" नामक दृश्य सक्षम करें
  3. "बल्क ऑपरेशन: टैक्सोनॉमी टर्म" नामक दृश्य में एक कॉलम जोड़ें
  4. FLUSH CACHES - उसके बाद एडमिन> स्ट्रक्चर> टैक्सोनॉमी> स्पेसिफिक वॉक पर जाएं

दृश्य संचालन और व्यवस्थापक दृश्य


1

मैंने अभी सभी टैक्सोनॉमी शर्तों को हटाने के लिए एक बटन जोड़ने के तरीके पर एक ब्लॉग पोस्ट लिखा है

अनिवार्य रूप से:

मैं इसके लिए jQuery के Easy Confirm Dialog plugin का उपयोग कर रहा हूं । सबसे पहले यहां से लाइब्रेरी डाउनलोड करें और इसे अपने थीम्स जेएस फोल्डर में डालें।

फिर हम एक कस्टम मॉड्यूल में एक छोटे से कोड के साथ "सभी शर्तें हटाएं" बटन जोड़ सकते हैं:

function hook_form_alter(&$form, &$form_state, $form_id) {
    switch($form_id) {
        case 'taxonomy_overview_terms':

            if($form['#total_entries']) {
                drupal_add_library('system', 'ui.dialog');
                drupal_add_js(drupal_get_path('theme', 'YOUR_THEME_NAME').'/js/jquery.easy-confirm-dialog.js');         
                $js = 'jQuery(document).ready(function($){$(".confirm").easyconfirm({locale: { title: \'Delete all '.$form['#vocabulary']->name.' terms\', button: [\'No\',\'Yes\']}});});';
                drupal_add_js($js, array('type'=>'inline'));
                $form['actions']['delete_all'] = array(
                    '#markup' => '<a href="https://drupal.stackexchange.com/admin/structure/taxonomy/'.$form['#vocabulary']->vid.'/delete-all" class="button confirm" title="Are you sure you want to delete all terms from the '.$form['#vocabulary']->name.' vocabulary?">Delete All Terms</a>',
                    '#weight' => 10,
                    '#attributes' => array('class' => array('button'))
                );
            }

            break;
    }
}

अब हमें शर्तों को हटाने के लिए अपने फ़ंक्शन के लिए पथ को परिभाषित करने की आवश्यकता है:

function hook_menu() {
    $items = array();
    $items['admin/structure/taxonomy/%/delete-all'] = array(
        'title' => 'Delete all taxonomy terms',
        'type' => MENU_CALLBACK,
        'page callback' => 'delete_all_taxonomy_terms',
        'page arguments'    =>  array(3),
        'access arguments'  =>  array('administer taxonomy'),
    );
    return $items;
}

और अंत में वास्तव में शर्तों को हटाने के लिए कार्यक्षमता जोड़ें:

function delete_all_taxonomy_terms($vid) {
    $vocabulary = taxonomy_vocabulary_load($vid);
    $query = new EntityFieldQuery();
    $result = $query
        ->entityCondition('entity_type', 'taxonomy_term')
        ->propertyCondition('vid', $vid)
        ->execute();
    foreach($result['taxonomy_term'] as $term) {
        taxonomy_term_delete($term->tid);
    }
    drupal_set_message('All terms have been deleted from the '.$vocabulary->name.' vocabulary');
    drupal_goto('admin/structure/taxonomy/'.$vocabulary->machine_name);
}

0

बस उत्तरों को पूरा करने के लिए एक मॉड्यूल है जो वास्तव में ऐसा कर रहा है। यह taxonomy_delete_all_terms मॉड्यूल है। मैंने इसका इस्तेमाल किया है और यह काम करता है।

बहुत बड़ी वर्गीकरण स्वायत्तता वाली साइटों के लिए, शब्द विलोपन अनुरोध के कारण शब्द विलोपन को हटाना असंभव हो सकता है। जब विलोपन लेनदेन पूर्ण होने से पहले ऐसा होता है, तो लेन-देन वापस ले लिया जाता है, जिसके कारण कोई भी शर्त नहीं हटाई जाती है।


0

मेरा उत्तर मूल प्रश्न से संबंधित है। केनोर्ब के उत्तर पर निर्माण , यदि आप अपनी साइट पर सभी शब्दशः साफ़ करना चाहते हैं, तो आप निम्न कार्य कर सकते हैं:

drush -v eval '$vocabularies = taxonomy_get_vocabularies(); foreach($vocabularies as $vocabulary) { foreach(taxonomy_get_tree($vocabulary->vid) as $term) { taxonomy_term_delete($term->tid);}}'

0

जैसा कि @texas_bronius द्वारा कहा गया था, यदि आपके पास डेवेल जेनरेट सक्षम है, तो आप इसका उपयोग कर सकते हैं, लेकिन इसे एक कदम आगे ले जाते हुए, यदि आपने भी ड्रूव इंस्टॉल किया है, तो मैं इस कमांड का उपयोग करता हूं:

drush generate-terms [शब्दावली_machine_name] 0 --kill

और बस अपनी शब्दावली के मशीन नाम के साथ [शब्दावली_मचाइन_नाम] बदलें। "0" कितने शब्दों को जोड़ने के लिए है और "--kill" उन लोगों को हटाने के लिए है जो वर्तमान में हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.