सुविधा की स्थापना रद्द करने के बाद सुविधा सामग्री प्रकार को हटाने में असमर्थ


जवाबों:


15

समाधान

hook_uninstall()FEATURE_NAME.install फ़ाइल का उपयोग करना और सामग्री प्रकार की स्थिति बदलना, इसलिए सिस्टम को लगता है कि यह एक अनलॉक, कस्टम सामग्री प्रकार है।

मैंने इसे d.org पर भी पोस्ट किया है

<?php
/**
 * Implements hook_uninstall().
 */
function FEATURE_NAME_uninstall() {

  // List custom content types added by this feature
  $custom_ctypes = array(
    'blog',
  );

  // Go through each and unlock the content type
  foreach ($custom_ctypes as $ctype) {
    db_query("UPDATE {node_type} SET `custom` = 1, locked = 0 WHERE type = :ctype", array(':ctype' => $ctype));
  }

  // Clean Drupal cache; this is necessary for the "Delete" link to appear
  // next to the content type created by the feature.
  drupal_flush_all_caches();

}

इससे उस सामग्री प्रकार के लिए "हटाएं" बटन दिखाई देगा, इसलिए आप इसे व्यवस्थापक से हटा सकते हैं।

आशा है कि यह किसी की मदद करता है!


1
स्पष्ट करने के लिए, यह सामग्री प्रकार को नहीं हटाता है; यह सामग्री प्रकार सूची पृष्ठ में 'डिलीट' लिंक उपलब्ध कराता है। धन्यवाद @ इवानोहे!
दोगुना

1
इसके अलावा, मैं ऐसा करने में सक्षम नहीं था, जबकि मेरे फीचर्स मॉड्यूल सक्षम थे, लेकिन अक्षम करने और अनइंस्टॉल करने के बाद (मैंने ड्रश का इस्तेमाल किया था) इस खूबसूरती से। शॉर्टकट: इस फ़ंक्शन की सामग्री को / devel / php में ड्रॉप करके devel मॉड्यूल का उपयोग करें। प्रोग्राम node_type_delete($ctype); के लिए लूप में क्वेरी के बाद सामग्री प्रकार ऐड जोड़ें ।
19

उस कोड के लिए धन्यवाद। इस कोड को देखने के बाद मैंने phpMyAdmin का उपयोग करके अपने डेटाबेस को संपादित किया और "node_type" तालिका को संपादित किया। तब मुझे पता चला कि मैं "कस्टम" मान को "1" पर हटाने और सेट करने के लिए वानस्पतिक प्रकार पाया। और finnaly मैं इसे Drupal प्रशासन से हटा दिया।
andiTKO

2
mysql> UPDATE node_type SET custom = 1, locked = 0 WHERE type = '<content type machine name>';
मार्को लेज़ेररी

@ MarcoLazzeri के समाधान ने मेरे लिए पूरी तरह से काम किया और यह केवल अपने स्थापना रद्द करने के लिए अपने फीचर मॉड्यूल को अपडेट करने से बेहतर था।
डोनट

11

मेरे लिए, समाधान हटाना पृष्ठ को मैन्युअल रूप से लोड करना था क्योंकि सामग्री प्रकार पृष्ठ पर कोई "हटाएं" लिंक नहीं है। ऐसा करने के लिए, आपको बस उसी URL संरचना का अनुसरण करके URL का निर्माण करना होगा, जो अन्य सामग्री प्रकारों के लिए हटाए गए पृष्ठ के रूप में हो:

व्यवस्थापक / संरचना / प्रकार / प्रबंधन / YOUR_CONTENT_TYPE_MACHINE_NAME / हटाएँ

इससे कंटेंट टाइप डिलीट कन्फर्मेशन पेज सामने आया, जिसने मुझे कंटेंट टाइप डिलीट करने की अनुमति दी।

संदर्भ के लिए, Drupal.org पर इस धागे को देखें:

https://drupal.org/node/1055460#comment-7297680

सादर,

@cmsdave


मैंने हटाने के लिए अंत में प्रदर्शन सामग्री प्रकार लिंक को बदल दिया है और समस्या के बिना सामग्री प्रकार को हटा सकता है। यह समाधान काम करता है!
cateye

नोट : इससे पहले कि यह काम करे मुझे फीचर की .infoफाइल को एडिट करना होगा और कंटेंट टाइप को हटाना होगा, तब यह वास्तव में डिलीट हो जाएगा।
डंकनमो

3

उपरोक्त विधि टैक्सोनॉमी को नष्ट नहीं करती है, लेकिन इसे मॉड्यूल को अक्षम और अनइंस्टॉल करने के बाद निम्नलिखित जोड़कर प्राप्त किया जा सकता है:

// Delete taxonomies.
$machine_names = array('taxonomy_a', 'taxonomy_b');
foreach ($machine_names as $machine_name) {
  $taxonomy = taxonomy_vocabulary_machine_name_load($machine_name);
  taxonomy_vocabulary_delete($taxonomy->vid);
}

1

एक और समाधान जो मेरे लिए सीधे मेरी विकास साइट के डेटाबेस में काम करता है। अपने डेटाबेस का बैकअप हमेशा याद रखें।

मैन्युअल रूप से एक सामग्री प्रकार को हटाने के लिए जो कि एक सुविधा # 16 द्वारा बनाया गया था जो कि नेदजो बताता है कि निम्नलिखित है:

  • सुविधा को अक्षम करें। मैंने कभी-कभी इसके साथ समस्याओं में भाग लिया है - एक सुविधा अक्षम नहीं होगी। इस स्थिति में, फीचर मॉड्यूल कोड को हटा दें।
  • डिलीट की जाने वाली सामग्री के प्रकार का मशीन नाम निर्धारित करें, जैसे, 'mytype'।
  • डेटाबेस में, डिफ़ॉल्ट पर नोड_टाइप तालिका मानों को वापस कर दें जैसे कि सामग्री प्रकार को UI के माध्यम से मैन्युअल रूप से बनाया गया था:

mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';

  • सामग्री प्रकार परिवर्तन उपलब्ध है यह सुनिश्चित करने के लिए स्पष्ट कैश।
  • UI पर व्यवस्थापक / संरचना / प्रकारों के माध्यम से, सामग्री प्रकार हटाएं।

0

यदि आप admin_menu मॉड्यूल का उपयोग करते हैं , तो आप तब भी पुल-डाउन मेनू में डिलीट लिंक देखेंगे संरचना / सामग्री प्रकार / [सामग्री प्रकार नाम] / हटाएं, भले ही वे सामग्री प्रकार पृष्ठ पर प्रदर्शित न हों।

मैं कहूंगा कि इस डिलीट लिंक का उपयोग करना बहुत सुरक्षित है यदि आप आश्वस्त करते हैं कि इस सामग्री प्रकार का कोई अन्य संदर्भ नहीं है।

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