मेरे पास एक बड़ी शब्दावली है, और व्यवस्थापक विचार अभी तक वर्गीकरण के लिए काम नहीं करते हैं। टैक्सोनॉमी मैनेजर ऐसा नहीं करता है। क्या थोक अवधि हटाने के लिए कोई विकल्प हैं?
मेरे पास एक बड़ी शब्दावली है, और व्यवस्थापक विचार अभी तक वर्गीकरण के लिए काम नहीं करते हैं। टैक्सोनॉमी मैनेजर ऐसा नहीं करता है। क्या थोक अवधि हटाने के लिए कोई विकल्प हैं?
जवाबों:
टैक्सोनॉमी मैनेजर में बल्क डिलीट फंक्शनलिटी है, बस अपनी शब्दावली के सभी शब्दों को चुनें और 'डिलीट' बटन पर क्लिक करें:
यदि आप इसे कोड का उपयोग करके करना चाहते हैं, तो निम्नलिखित में से कुछ की मदद करनी चाहिए:
$vocabulary = taxonomy_vocabulary_machine_name_load('my_custom_vocabulary');
foreach (taxonomy_get_tree($vocabulary->vid) as $term) {
taxonomy_term_delete($term->tid);
}
सामग्री प्रकार, टैक्सोनॉमी शब्दावली आदि द्वारा बल्क-डिलीटिंग कंटेंट की एक पसंदीदा विधि http://drupal.org/project/devel मॉड्यूल का उपयोग करती है । किसी शब्दावली में सभी शब्द हटाने के लिए:
वोइला-- खाली शब्दावली, अन्यथा अछूती।
आप निम्न आदेश का उपयोग कर सकते हैं:
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'"
यह सभी देखें:
drush sqlq "DELETE FROM taxonomy_term_data WHERE vid = (SELECT vid FROM taxonomy_vocabulary WHERE name = 'vocabulary_name')"
व्यवस्थापन दृश्य बस पूर्वनिर्मित वीबीओ दृश्य प्रदान करता है। VBO स्वयं शर्तों (या किसी अन्य इकाई प्रकार) के साथ ठीक काम करता है, VBO को स्वयं स्थापित करें और वह दृश्य बनाएँ जो आप चाहते हैं, फिर शर्तों को हटाने के लिए VBO का उपयोग करें।
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
मैं टैक्स व्यू शर्तों के डिफ़ॉल्ट प्रदर्शन को बदलने के लिए एक दृश्य प्राप्त करने के लिए VBO के साथ व्यवस्थापक दृश्यों का उपयोग करने की सलाह दूंगा ।
आपको जो करना है वह निम्नलिखित है:
मैंने अभी सभी टैक्सोनॉमी शर्तों को हटाने के लिए एक बटन जोड़ने के तरीके पर एक ब्लॉग पोस्ट लिखा है ।
अनिवार्य रूप से:
मैं इसके लिए 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);
}
बस उत्तरों को पूरा करने के लिए एक मॉड्यूल है जो वास्तव में ऐसा कर रहा है। यह taxonomy_delete_all_terms मॉड्यूल है। मैंने इसका इस्तेमाल किया है और यह काम करता है।
बहुत बड़ी वर्गीकरण स्वायत्तता वाली साइटों के लिए, शब्द विलोपन अनुरोध के कारण शब्द विलोपन को हटाना असंभव हो सकता है। जब विलोपन लेनदेन पूर्ण होने से पहले ऐसा होता है, तो लेन-देन वापस ले लिया जाता है, जिसके कारण कोई भी शर्त नहीं हटाई जाती है।
मेरा उत्तर मूल प्रश्न से संबंधित है। केनोर्ब के उत्तर पर निर्माण , यदि आप अपनी साइट पर सभी शब्दशः साफ़ करना चाहते हैं, तो आप निम्न कार्य कर सकते हैं:
drush -v eval '$vocabularies = taxonomy_get_vocabularies(); foreach($vocabularies as $vocabulary) { foreach(taxonomy_get_tree($vocabulary->vid) as $term) { taxonomy_term_delete($term->tid);}}'
जैसा कि @texas_bronius द्वारा कहा गया था, यदि आपके पास डेवेल जेनरेट सक्षम है, तो आप इसका उपयोग कर सकते हैं, लेकिन इसे एक कदम आगे ले जाते हुए, यदि आपने भी ड्रूव इंस्टॉल किया है, तो मैं इस कमांड का उपयोग करता हूं:
drush generate-terms [शब्दावली_machine_name] 0 --kill
और बस अपनी शब्दावली के मशीन नाम के साथ [शब्दावली_मचाइन_नाम] बदलें। "0" कितने शब्दों को जोड़ने के लिए है और "--kill" उन लोगों को हटाने के लिए है जो वर्तमान में हैं।