मैं उन चुनिंदा फ़ील्ड की अनुमत सूची सूची से आइटम कैसे निकाल सकता हूं जिनमें मूल्यों के लिए डेटा है?


16

मैंने एक ऐसी सामग्री प्रकार बनाई है जिसमें एक सूची / चयन विकल्प क्षेत्र है, और मैंने कुंजी सूची में प्रवेश किया है।

डेटा दर्ज किया गया है, और यह तय किया गया है कि कुछ शर्तें अब लागू नहीं होती हैं और उन्हें हटा दिया जाना चाहिए।

हालाँकि, जब उक्त शब्दों को हटाने की कोशिश की जा रही है, तो मुझे निम्नलिखित त्रुटि मिली:

Allowed values list: some values are being removed while currently in use.

जाहिर है, एक परियोजना के जीवन में, मूल्यों को बदलने जा रहे हैं। सूचीबद्ध शर्तों के साथ नोड्स संबद्ध होने के बाद आइटम हटाने का एक व्यावहारिक तरीका क्या है?

यह निकटतम चीज़ है जो मुझे मिल सकती है:

https://drupal.org/node/1653012

यह एक d6 प्लगइन और कुछ पैच प्रवंचना का संदर्भ देता है, जिसका मुझे सहारा नहीं लेना चाहिए। अगर मुझे अंततः उस क्षेत्र पर सत्यापन की जाँच को हटाने के लिए पैच का उपयोग करने का सहारा लेना पड़ता है, तो क्या उन वस्तुओं को छोड़ने में कोई नुकसान है जो उनके साथ जुड़े नोड्स पर अनाथ थीं?

अद्यतन, मैं इस मुद्दे को फिर से एक सरकारी ग्राहक के साथ ले आया हूं जिसने पिछले 7 वर्षों से Drupal साइट के लिए 50 राज्यों और क्षेत्रों का चयन सूची में किया है। अब, नीति बदल गई है और क्षेत्रों को अब शामिल करने की आवश्यकता नहीं है। चयनित सूचियों से आइटम निकालने में सक्षम होना महत्वपूर्ण है, और इस प्रकार मैं एक इनाम दे रहा हूं।

मैं चुनिंदा सूची से आइटम निकालने में सक्षम होने के लिए एक सुरक्षित समाधान ढूंढ रहा हूं। मुझे नहीं पता कि क्या वह समाधान किसी भी नोड को अपडेट करना चाहिए क्योंकि मुझे यकीन नहीं है कि नोड के कुल सामग्री के संबंध में फ़ील्ड मान कैसे संग्रहीत किए जाते हैं।

मैं MySQL में चलाने के लिए एक शुद्ध एसक्यूएल समाधान से खुश हूं; या, मैं एक मॉड्यूल की तलाश कर रहा हूं।


3
जाहिर है, एक परियोजना के जीवन में, मूल्यों को बदलने जा रहे हैं। मैं इस बात पर विवाद करूंगा कि - परियोजना की शुरुआत में एक स्थिर चयन सूची के मूल्यों को परिभाषित किया जाना चाहिए। यदि आपको इसे लचीला बनाने की आवश्यकता है, तो आपको स्थैतिक सूची के बजाय एक शब्द संदर्भ का उपयोग करना चाहिए। स्टैटिक लिस्ट सेक्स (पुरुष / महिला) जैसी चीजों के लिए है, जब तक कि हम चीजों में गंभीर बदलाव नहीं करते हैं, जल्द ही कभी भी बदलने की संभावना नहीं है। और अगर ऐसा होता है, तो इसे जोड़ा जाएगा , हटाया नहीं जाएगा । जब भी मैं इस 'गलती' कर दिया है मैं हमेशा मिला है वापस करने के लिए सबसे अच्छा तरीका है डेटा पर मैनुअल प्रश्नों को चलाने के लिए है
क्लाइव

1
क्या आप इस सूची को गतिशील बनाना चाहते हैं? निर्माण और विलोपन में गतिशील होना।
M ama D

1
हाँ, मुझे लगता है कि यह सिर्फ राय के लिए नीचे है - कार निर्माता हमेशा किसी भी साइट के लिए एक नोड प्रकार या शब्दावली होगा जो मैं बनाऊंगा। चूंकि निर्माता कार की एक श्रेणी (या कार की श्रेणी है जिसे कोई मरम्मत करता है), यह एक सामग्री प्रकार के बजाय मेरे लिए एक वर्गीकरण के रूप में सबसे अधिक समझ में आता है। लेकिन मुझे पता है कि मदद नहीं ... मैं डीबी में अनाथ डेटा छोड़ने से सावधान रहना होगा करता है, यह जानते हुए भी कि वास्तव में क्या आपकी साइट पर स्थापित है और यह कैसे कॉन्फ़िगर किया गया है के बिना क्या असर हो सकता है कि कहने के लिए बहुत मुश्किल है
क्लाइव

1
क्या गलत है view_bulk_operations?
दान करें

1
हे, इनमें से किसी भी उत्तर में अभी तक कोई उत्थान नहीं हुआ है: /
दस

जवाबों:


7

मैंने निम्नलिखित दृष्टिकोण के साथ हाल ही में ऐसा कुछ किया।

  1. नए अनुमत मान जोड़ें।
  2. "सक्रिय" मानों को कॉन्फ़िगर करने के लिए एक सेटिंग जोड़ें।
  3. फ़ॉर्म पर प्रदर्शन से "निष्क्रिय" मानों को फ़िल्टर करें।

उदाहरण के लिए:

/**
 * Admin settings form
 */
function MODULE_admin_settings(){

  $form = array();

  // Select active preferences for display
  $field = field_info_field('field_preferences');
  $preferences = list_allowed_values($field);
  $form['field_preferences_active'] = array(
    '#type' => 'checkboxes',
    '#title' => t('Active preferences'),
    '#options' => $preferences,
    '#description' => t('Select the preferences available for user selection.'),
    '#default_value' => variable_get('field_preferences_active', array()),
  );

  return system_settings_form($form);

}

/**
 * Implements hook_field_attach_form
 */
function MODULE_field_attach_form($entity_type, $entity, &$form, &$form_state, $langcode) {

  // Filter out inactive preferences
  if(isset($form['field_preferences'])){
    $preferences = variable_get('field_preferences_active', array());
    foreach($preferences as $key => $preference){
      // If this preference isn't checked, but is set in the field values, unset it.
      if(empty($preference) && isset($form['field_preferences'][LANGUAGE_NONE]['#options'][$key])){
        unset($form['field_preferences'][LANGUAGE_NONE]['#options'][$key]);
      }
    }
  }

}

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


1
यह विकल्प अनिवार्य रूप से गैर-विनाशकारी है (यानी, डिलीट के बजाय सामान छिपाएं), और संभवत: सबसे अच्छा शुरुआती बिंदु है जब तक कि आप किसी भी संस्था से निपटने के लिए कार्रवाई का सबसे अच्छा पाठ्यक्रम निर्धारित कर सकते हैं जिनके पास पुराने विकल्प हैं।
mpdonadio

3

जैसा कि मुझे पता है, सभी फ़ील्ड डेटा को 2 तालिकाओं में संग्रहीत किया जाता है: फ़ील्ड_डेटा_फील्ड_एफआईएलडीएमएनएम और फील्ड_रेविजन_फील्ड_एफआईएलडीएनडीएमए। और मुझे अपने विचार की पुष्टि यहाँ मिली: /programming//a/7773117/1300562

इसलिए अनावश्यक फ़ील्ड मानों को हटाने के लिए आपको इन मूल्यों को उपर्युक्त तालिकाओं से हटाने की आवश्यकता है और फिर उन्हें अनुमत मानों की सूची से हटा दें।

चरण 1।

$values_to_remove = array('value1', 'value2'); // an array of unnecessary values
$fieldname = 'FIELDNAME'; // name of your field. For example,
                          // 'territory' for field with machine name 'field_territory'
$entity_type = 'node'; // it's 'node' in your case, but it can be 'taxonomy_term' or something else

db_delete('field_data_field_' . $fieldname)
  ->condition('entity_type', $entity_type)
  ->condition('field_' . $fieldname . '_value', $values_to_remove)
  ->execute();

db_delete('field_revision_field_' . $fieldname)
  ->condition('entity_type', $entity_type)
  ->condition('field_' . $fieldname . '_value', $values_to_remove)
  ->execute();

चरण 2.
फ़ील्ड सेटिंग पृष्ठ पर कुंजी के अनावश्यक जोड़े निकालें। मूल्य और परिवर्तनों को सहेजने के लिए फ़ॉर्म सबमिट करें।
कैश को उसके बाद स्वचालित रूप से साफ़ किया जाना चाहिए, लेकिन यदि आप अभी भी नोड पेज पर हटाए गए फ़ील्ड मान देख सकते हैं, तो कैश को मैन्युअल रूप से साफ़ करें।

PS हाल ही में मुझे इसी तरह की समस्या का सामना करना पड़ा, और अब मैं पाठ मानों की सूची के बजाय "टर्म संदर्भ" या (और भी बेहतर) "एंटिटी संदर्भ" के क्षेत्रों का उपयोग करना पसंद करता हूं। संदर्भ क्षेत्र का उपयोग करते समय, आप प्रत्येक क्षेत्र के लिए अलग शब्दावली बना सकते हैं और किसी भी समय बस शब्द बना / संपादित / हटा सकते हैं।


यदि क्षेत्र दोहरा रहा है, तो वे क्वेरी शेष डेटा के लिए डेल्टा समायोजित नहीं करेंगे।
mpdonadio

1

सबसे पहले देखें कि क्या आपके पास क्षेत्र में निर्दिष्ट कोई अनुमत मान है? यदि आप करते हैं, तो एक अन्य विकल्प मान्य नहीं होगा। इसलिए पहले फ़ील्ड सेटिंग्स टैब से मानों को हटाने का प्रयास करें।

वैकल्पिक रूप से आपके पास 2 विकल्प हैं:


1।

उन सभी मूल्यों को हटा दें जिन्हें आपने अनुमत मान सूची में डाला है जो उपयोगकर्ता खातों द्वारा उपयोग में हैं। उदाहरण के लिए, आप इन्हें खोजने के लिए SQL क्वेरी चला सकते हैं:

SELECT * FROM field_data_field_MYFIELDNAME WHERE entity_type = 'user' and value = 'MY VALUE'

या एक उपयोगकर्ता दृश्य बनाएं जो आपको दिखाता है कि उन उपयोगकर्ता खातों का मूल्य है जिन्हें आप अनुमत मान सूची से निकालना चाहते हैं।


2।

यदि आप फ़ील्ड से मान नहीं निकालना चाहते हैं, तो इसे हैक द्वारा प्राप्त किया जा सकता है।

चेतावनी, यह उत्पादन के लिए सुझाया गया समाधान नहीं है और आपको पता होना चाहिए कि आप क्या कर रहे हैं!

  1. मॉड्यूल / फ़ील्ड / field.module ढूंढें और संपादित करें
  2. Field_has_data () फ़ंक्शन ढूंढें और फ़ंक्शन return TRUE;की पहली पंक्ति में जोड़ें ।

    function field_has_data($field) {
      return FALSE; // HACK !!!
      $query = new EntityFieldQuery();
  3. अपने इच्छित मानों के साथ फ़ील्ड को फिर से सहेजें।
  4. जैसे ही आप ऐसा करते हैं हैक को हटा दें।

0

मुझे लगता है कि आप वास्तव में व्यू बल्क ऑपरेशन मॉड्यूल का उपयोग करके ऐसा कर सकते हैं ।

  1. उस फ़ील्ड पर एक नया विकल्प जोड़ें जिसे आप बदलना चाहते हैं। उदाहरण के लिए: na | NA |
  2. नोड को उस क्षेत्र के साथ सूचीबद्ध करने के लिए एक दृश्य बनाएं
  3. उस दृश्य पर "बल्क ऑपरेशन: सामग्री" फ़ील्ड जोड़ें
  4. "इकाई मूल्यों को संशोधित करें" और "प्रदर्शन योग्य टोकन दिखाएं" जांचें (सभी प्रदर्शन मानों पर चयन करें)
  5. फ़िल्टर मानदंड पर जिस क्षेत्र को आप बदलना चाहते हैं उसे जोड़ें और फ़िल्टर को "बेनकाब" करें
  6. उस दृश्य पर url पथ सेट करें
  7. उस दृश्य पृष्ठ पर जाएं और बदलें
  8. अब, फ़ील्ड विकल्प को बदलने के लिए एक्सपोज़ और ऑपरेशंस सुविधाओं का उपयोग करें
  9. किया हुआ

0

यहाँ एचएल उत्तर के लिए एक सुधार आता है जो मुझे लगता है कि सबसे अच्छा है:

योग करने के लिए, आपको सामग्री को नए मान निर्दिष्ट करने की आवश्यकता होती है, जिसमें आपके चयनित फ़ील्ड के लिए "पुराने" मान निर्दिष्ट होते हैं।

व्यू बल्क ऑपरेशंस के अलावा , आपको एडमिनिस्ट्रेशन व्यू मॉड्यूल इंस्टॉल और इनेबल करना होगा । इस मॉड्यूल के साथ, आपके पास पहले से ही आउट-ऑफ-द-बॉक्स दृश्य है, जिसमें बल्क ऑपरेशन सक्षम हैं (बस एक बार सक्षम होने पर व्यवस्थापक / सामग्री देखें)। फिर:

1) एक "प्रशासन: नोड" दृश्य को संपादित करें

2) शीर्ष पर "ऐड -> पेज" बटन का उपयोग करते हुए देखने के लिए एक नया पेज डिस्प्ले जोड़ें

3) नए प्रदर्शन के लिए एक पथ असाइन करें: उदाहरण व्यवस्थापक / सामग्री / कस्टम

4) अपने चयनित फ़ील्ड के लिए एक नया फ़िल्टर जोड़ें: ऑपरेटर चुनें "में से एक है" और फिर उन सभी विकल्पों का चयन करें जिन्हें आप हटाना चाहते हैं

5) दृश्य सहेजें

6) एडमिन / कंटेंट / कस्टम पर जाएं। अब आपको वो सभी कंटेंट दिखाई देंगे, जिन्हें आपको बल्क एडिट करने की जरूरत है (अपने चुनिंदा फील्ड के लिए वैल्यू बदलें)

7) तालिका के बाईं ओर पहले चेकबॉक्स पर क्लिक करके सभी पंक्तियों का चयन करें (यदि एक से अधिक पृष्ठ हैं, तो एक बटन भी चुनें जो कहेगा "इस दृश्य में सभी एक्स पंक्तियों का चयन करें")

8) ऑपरेशन "परिवर्तन मूल्य" चुनें और "निष्पादित करें" दबाएं

9) अपने चुने हुए क्षेत्र के लिए, उन लोगों को अधिलेखित करने के लिए एक नया मान चुनें, जिन्हें आप हटाना चाहते हैं

10) उस चुनिंदा फ़ील्ड के लिए चेकबॉक्स चुनें

11) अगला क्लिक करें और आप कर रहे हैं


0

ऐसा लगता है कि आपकी ड्रुपल समस्या एक गहरी डेटा समस्या पर आधारित है: उन संस्थाओं का क्या होता है जो वर्तमान में मूल्यह्रास सूची मूल्यों का उपयोग कर रहे हैं? यह प्रश्न त्रुटि संदेश के मूल में है कि Drupal आपको भेज रहा है।

अपने राज्य / क्षेत्र के उदाहरण पर करीब से नज़र डालें। आपका ग्राहक एक ऐसी प्रणाली का उपयोग करता रहा है जो वर्षों तक राज्यों और क्षेत्रों का एक ही तरह से व्यवहार करती है और नोड्स के एक विशाल समूह का निर्माण करती है जिसमें राज्य और क्षेत्र दोनों शामिल होते हैं। फिर एक दिन, जो शक्तियां तय करती हैं कि प्रदेशों को अलग तरीके से संभालने की जरूरत है और यह कि क्षेत्र आवंटित करने के लिए ड्रॉप-डाउन में अब क्षेत्र नहीं होने चाहिए। महान। बस एक दृश्य बनाएं जो सभी क्षेत्रों के नोड्स की एक सूची को प्रस्तुत करने के लिए मानक फिल्टर का उपयोग करता है और अपने क्षेत्र के सभी मूल्यों को बदलने के लिए व्यू थोक संचालन का उपयोग करता है ... क्या ... कुछ 51 वें राज्य को अन्य कहा जाता है? प्रदेशों का भाग्य बहुत गंभीर प्रश्न है। आपके समाधान में क्षेत्र की स्थिति को संरक्षित या स्थानांतरित करने के लिए एक विधि शामिल होनी चाहिए। आपको 'टेरिटरी' नामक एक नई सूची फ़ील्ड बनाने की आवश्यकता हो सकती है

व्यू बल्क ऑपरेशंस के साथ आपको रूल्स का उपयोग करना होगाइन परिवर्तनों को करने के लिए आपको । यदि आपको नियमों के बारे में अधिक जानकारी नहीं है, तो कृपया जानने के लिए कुछ समय लें कि वे कैसे काम करते हैं। नियम आपको ट्रिगर, स्थितियों और कार्यों के आधार पर जानकारी में हेरफेर करने की क्षमता देता है। नियमों के बारे में जानने के बाद, आप पा सकते हैं कि आप जो उत्तर देख रहे हैं, वह सहज रूप से स्वयं को प्रस्तुत करेगा। मूल रूप से, आपको एक नियम बनाने की आवश्यकता होगी, जिसे एक बल्क ऑपरेशन द्वारा ट्रिगर किया गया है, जो सभी क्षेत्रों को लक्षित करेगा और उन्हें हटा देगा, पुन: असाइन करेगा, नाम बदलेगा या अन्यथा उन्हें सूचना के मुख्य निकाय से अलग करेगा। नियम राज्य क्षेत्र को किसी तरह से स्टोर करने में सक्षम होना चाहिए, जबकि एक ही समय में, राज्य ड्रॉपडाउन को 'अन्य' या 'एन / ए' स्थिति में सेट करें। यह वह सब हो सकता है जिसकी आवश्यकता है। अन्यथा...

पुन: असाइनमेंट किए जाने के बाद, यह मूल सूची फ़ील्ड को बदलने और क्षेत्र के नामों को हटाने के लिए एक सरल ऑपरेशन होना चाहिए। हालांकि, यदि सिस्टम अभी भी आपको सूची को बदलने की अनुमति नहीं देता है, तो आपको एक नई सूची फ़ील्ड बनाने की आवश्यकता हो सकती है, फिर वर्तमान स्थिति के सभी मूल्यों की समीक्षा करने और उन्हें नई सूची में पुन: असाइन करने के लिए व्यू बल्क ऑपरेशन और नियमों का उपयोग करें। नियम सभी संबंधित नोड्स को लक्षित करने और फील्ड वैल्यू के आधार पर उन पर कार्य करने के लिए व्यू बल्क ऑपरेशंस के साथ काम कर सकते हैं। जब आप नियमों का उपयोग करते हैं, तो नोड्स के समूह के लिए मौजूदा सूची फ़ील्ड के मूल्य के आधार पर एक नई सूची फ़ील्ड का मान सेट करना आसान होता है।

यह भी याद रखें, यदि ड्रुपल आपको एक ऑपरेशन से परेशानी देता है, तो मुश्किल विकल्प पर विचार करने से पहले हमेशा कैश को फ्लश करें।


0

मुझे लगता है कि आपके ग्राहक को यह मूल मूल्य रखने के लिए विरासत सामग्री चाहिए, जिसका अर्थ है कि चयन सूची को बदलना किसी भी पिछले डेटा को प्रभावी ढंग से नष्ट कर देगा। यदि यह चिंता का विषय नहीं है, तो शायद कोई भी अन्य उत्तर काम करेगा। यदि यह है, तो आप वास्तव में उस डेटा इतिहास को खोए बिना चयन सूची को बदल नहीं सकते हैं। ऐतिहासिक डेटा की अनुमति देने के लिए, मैं एक बहुत ही सरल मार्ग पर जा सकता हूं, जबकि साइट को थोड़ा और भविष्य के प्रमाण के रूप में बनाया जा सकता है - मैं सुझाव दूंगा:

* स्थैतिक डेटा के बजाय एक वर्गीकरण का उपयोग करके उस चयन सूची के लिए एक नया क्षेत्र सेट करें

* मौजूदा चयन सूची के लिए फ़ील्ड अनुमति को VIEW के रूप में सेट करें, लेकिन व्यवस्थापक को छोड़कर किसी के द्वारा EDIT नहीं

इसके साथ, पुराने क्षेत्र को देखने योग्य और खोज योग्य बना रहना चाहिए (केवल एक नया शीर्षक जोड़ना जो इसे विरासत के रूप में दर्शाता है) लेकिन संपादन योग्य नहीं है। यह पाठ्यक्रम कस्टम खोजों, विचारों आदि पर बहुत अधिक निर्भर करता है, जिन्हें समायोजित करने की आवश्यकता हो सकती है।

मैं यह सुझाव देता हूं (जितना गड़बड़ लग सकता है), क्योंकि उस डेटा को हटाने से इतिहास को हटा दिया जाता है, और यह लंबे समय में विनाशकारी हो सकता है। आप एडिट नोड में पुराने क्षेत्र को छिपाने के लिए सीएसएस का उपयोग भी कर सकते हैं, और नई सामग्री के लिए इसे छिपाने के लिए एक हुक (जहां इसका कोई मान सेट नहीं है)। इस तरह, यह केवल उस विरासत सामग्री के लिए दिखाई देगा।

बेशक, आप इसे पुरानी वनोपज सूची से नई स्वायत्तता तक डेटा कॉपी करने के लिए कस्टम वन-ऑफ मॉड्यूल के साथ एक कदम आगे ले जा सकते हैं।


0

बचाव के लिए एक सरल ड्रश स्क्रिप्ट! हम फ़ील्ड डेटा और फ़ील्ड रिवीज़न टेबल को अपडेट करते हैं और फ़ील्ड सेटिंग्स को मैन्युअल रूप से बदलने से पहले पुराने मानों को नए के साथ बदलते हैं।

यदि हमारे पास हमारे वर्तमान क्षेत्र सेटिंग्स में ऐसा कुछ है:

&date=today|today
&date=last2days|last2days

और इसे निम्नलिखित के साथ बदलना चाहते हैं:

date=today|today
date=last2days|last2days

हम पहले ड्रश स्क्रिप्ट चलाते हैं और फिर व्यवस्थापक UI में फ़ील्ड सेटिंग्स बदलते हैं।

नोट: यह कोड मशीन नाम वाले क्षेत्र के लिए है field_foo_bar

    $field_name = 'foo_bar';

    print "for {$field_name}...\n";

    replace_field("&date=today", "date=today", $field_name);

    replace_field("&date=last2days", "date=last2days", $field_name);

    function replace_field($old_value, $new_value, $field_name, $entity_type='node') {
      print "Replacing {$old_value} with {$new_value}...\n";
      $data_count = replace_options_data_field($field_name, $entity_type, $old_value, $new_value);
      $revision_count = replace_options_revision_field($field_name, $entity_type, $old_value, $new_value);
      print $data_count + $revision_count . " entries replaced.\n";
    }

    function replace_options_data_field($field_name, $entity_type, $old_value, $new_value) {
      $num_updated = db_update('field_data_field_' . $field_name)
        ->fields(array(
                   'field_' . $field_name . '_value' => $new_value,
                 ))
        ->condition('entity_type', $entity_type)
        ->condition('field_' . $field_name . '_value', $old_value)
        ->execute();
      return $num_updated;
    }

function replace_options_revision_field($field_name, $entity_type, $old_value, $new_value) {
  $num_updated = db_update('field_revision_field_' . $field_name)
    ->fields(array(
               'field_' . $field_name . '_value' => $new_value,
             ))
    ->condition('entity_type', $entity_type)
    ->condition('field_' . $field_name . '_value', $old_value)
    ->execute();
  return $num_updated;
}

0

मैंने kenorb के दूसरे सुझाव का उपयोग किया और इसने Drupal 7.52, Profile2 7.x-1.3 क्षेत्र में मूल्यों की सूची को अद्यतन करने का काम किया। इसलिए यदि आपको ड्रुपल चेतावनी मिल रही थी: "अनुमत मूल्यों की सूची: वर्तमान में उपयोग में आने के दौरान कुछ मान निकाले जा रहे हैं।" निम्नलिखित ने मुझे (प्रोफाइल 2) फ़ील्ड से मानों को हटाने की अनुमति दी, बिना उन्हें हटाए या डेटाबेस में प्रतिस्थापित किए।

Drupal core की रूट डायरेक्टरी में, एक फोल्डर है जिसे मॉड्यूल कहा जाता है, और एडिट करने के लिए फाइल यहाँ पर स्थित है: मॉड्यूल / फ़ील्ड / field.mule। यह एक और फ़ाइल है, जब आप अपडेट किए गए मानों को पूरी तरह से अपने परिवर्तनों को वापस करना चाहिए। मैंने साइट को ऑफ़लाइन ले लिया, अस्थायी रूप से निम्न कोड ब्लॉक को (ड्रुपल रूट) /modules/field/field.odule में बदल दिया

function field_has_data($field) {
  $query = new EntityFieldQuery();
  $query = $query->fieldCondition($field)
    ->range(0, 1)
    ->count()
    // Neutralize the 'entity_field_access' query tag added by
    // field_sql_storage_field_storage_query(). The result cannot depend on the
    // access grants of the current user.
    ->addTag('DANGEROUS_ACCESS_CHECK_OPT_OUT');

  return (bool) $query
    ->execute() || (bool) $query
    ->age(FIELD_LOAD_REVISION)
    ->execute();
}

बिल्कुल साथ

function field_has_data($field) { 
    return FALSE; // hack 
    $query = new EntityFieldQuery();
}

और ड्रुपल ने शिकायत करना बंद कर दिया और मैं सूची को बदलने में सक्षम था। (मेरे मामले में, यह उन मूल्यों की सूची में संकाय है जिन्होंने विश्वविद्यालय छोड़ दिया है, लेकिन अभी भी छात्रों के रिकॉर्ड के साथ जुड़े हुए हैं, उनके सलाहकार, संरक्षक, आदि के रूप में)

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