আমার কাছে একটি বৃহত শব্দভাণ্ডার রয়েছে এবং অ্যাডমিনের মতামতগুলি এখনও শ্রমশৈলীর জন্য কাজ করে না। টেকনোমি ম্যানেজার পাশাপাশি এটি করে না। বাল্ক টার্ম মোছার জন্য কি কোনও বিকল্প আছে?
আমার কাছে একটি বৃহত শব্দভাণ্ডার রয়েছে এবং অ্যাডমিনের মতামতগুলি এখনও শ্রমশৈলীর জন্য কাজ করে না। টেকনোমি ম্যানেজার পাশাপাশি এটি করে না। বাল্ক টার্ম মোছার জন্য কি কোনও বিকল্প আছে?
উত্তর:
শ্রেণীবিন্যাস ব্যবস্থাপকের কাছে বাল্ক মোছার কার্যকারিতা রয়েছে, কেবল আপনার শব্দভান্ডারে সমস্ত পদ নির্বাচন করুন এবং 'মুছুন' বোতামটি ক্লিক করুন:
আপনি কোডটি ব্যবহার করে এটি করতে চাইলে নীচের মতো কিছুতে সহায়তা করা উচিত:
$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); }'
যদি এটি কাজ না করে তবে নিশ্চিত হয়ে নিন যে আপনি নিজের ক্যাশে সাফ করেছেন (যেমন মেমক্যাচড)।
বা নীচের নোংরা এসকিউএল কোয়েরি ব্যবহার করে দ্রুততর উপায়:
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 নিজে শর্তাদি (বা অন্য কোনও সত্তার ধরণের) দিয়ে ভাল কাজ করে yourself VBO নিজেই ইনস্টল করুন এবং আপনি যে ভিউটি চান তা তৈরি করুন, তারপরে শর্তগুলি মুছতে ভিবিও ব্যবহার করুন।
ড্রুপাল in-এর একটি ভোকাবুলারির মধ্যে সমস্ত শ্রেণীবদ্ধ শর্তাদি সর্বাধিক মুছে ফেলার জন্য, সমস্ত পদ 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 এবং devel মডিউল ইনস্টল, আপনি বাল্ক করার জন্য নিম্নোক্ত কমান্ডটি আপনার শেল মতো পরিবেশ থেকে বর্গীকরণ সূত্র * সমস্ত পদ মুছতে ব্যবহার করতে পারেন:
$ উত্পাদিত শর্তাদি ড্রাক্স TAXONOMY_MACHINE_NAME 0 --কিল
* এটি ধরে নেয় আপনার ডিভেল জেনারেট মডিউল সক্ষম হয়েছে, যা প্রয়োজন হলে এটি করা যেতে পারে:
$ drush en -y devel && drush en -y devel_generate
ট্যাক্সোনমি পদগুলির ডিফল্ট প্রদর্শন প্রতিস্থাপনের জন্য ভিউ পাওয়ার জন্য আমি ভিবিওর সাথে অ্যাডমিন ভিউগুলি ব্যবহার করার পরামর্শ দেব ।
আপনার যা করতে হবে তা হল:
আমি এখানে সমস্ত ট্যাক্সনোমির শর্তাদি মুছে ফেলার জন্য কীভাবে একটি বোতাম যুক্ত করতে পারি সে সম্পর্কে একটি ব্লগ পোস্ট লিখেছি ।
মূলত:
আমি এর জন্য jQuery ইজি কনফার্ম ডায়ালগ প্লাগইন ব্যবহার করছি । প্রথমে এখান থেকে গ্রন্থাগারটি ডাউনলোড করুন এবং এটি আপনার থিমস জেএস ফোল্ডারে রাখুন।
তারপরে আমরা কাস্টম মডিউলে একটি সামান্য কোড সহ একটি "সমস্ত শর্তাদি মুছুন" বোতামটি যুক্ত করতে পারি:
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);
}
উত্তরগুলি সম্পূর্ণ করতে এখানে একটি মডিউল হুবহু এটি করছে। এটি হ'ল ট্যাক্সনমি_ডিলেট_সকল_মিটার মডিউল। আমি এটি ব্যবহার করেছি এবং এটি কাজ করে।
খুব বড় ট্যাক্সনোমির শব্দভাণ্ডার সহ সাইটগুলির জন্য, মুছে ফেলার অনুরোধ সময়সীমার শব্দটি শব্দের কারণে শব্দভান্ডারগুলি মুছে ফেলা অসম্ভব হয়ে উঠতে পারে। মোছার লেনদেন শেষ হওয়ার আগে যখন এটি ঘটে তখন লেনদেনটি আবার ঘুরিয়ে দেওয়া হয়, যার ফলে কোনও শর্ত মুছে ফেলা হয় না।
আমার উত্তরটি মূল প্রশ্নের সাথে জড়িত। উপর নির্মাণের kenorb এর উত্তর, আপনি যদি আপনার সাইটে সব শব্দভাণ্ডারের পরিষ্কার করতে চান, আপনি নিম্নলিখিত চালাতে পারেন:
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 --কিল
এবং কেবল আপনার শব্দভান্ডারের মেশিনের নামের সাথে [শব্দভান্ডার_ম্যাচিন_নাম] প্রতিস্থাপন করুন। "0" হ'ল কতগুলি শর্ত যুক্ত করতে হবে এবং "- কিল" হ'ল এটি বর্তমানে রয়েছে সেগুলি সরাতে।