विचारों में एकल कस्टम फ़ील्ड मान को कैसे बदला जाए?


11

मेरे पास फ़ील्ड ग्लोबल: कस्टम टेक्स्ट के साथ एक दृश्य है, जिसे लिंक के रूप में संशोधित किया गया है। मैं इस लिंक को जेनरेट करने के लिए रिप्लेसमेंट टोकन बदलना चाहता हूं, जो दूसरे क्षेत्र के मूल्य पर निर्भर है।

इसे hook_views_pre_render में संशोधित करने की कोशिश की गई, लेकिन मुझे ऐसा करने का कोई तरीका नहीं मिला।

Hook_views_post_render में दो सरणियाँ हैं:

$view->style_plugin->render_tokens
$view->style_plugin->row_tokens

जिसमें प्रत्येक पंक्ति के लिए जेनरेट किए गए लिंक होते हैं, लेकिन वे pre_render में मौजूद नहीं होते हैं, और उन्हें post_render में बदलने से काम नहीं होता है।

मैंने यह भी करने की कोशिश की है कि template_preprocess_views_view_fields लेकिन उस विशिष्ट दृश्य के लिए यह फ़ंक्शन फायरिंग नहीं करता है (अन्य विचारों के लिए यह करता है), और मुझे नहीं पता कि क्यों।

जवाबों:


16
function hook_views_pre_render(&$view) {

  switch ($view->name) {
    case 'YOUR_VIEW_NAME':
      //  override the global custom text field value
      $view->field['nothing']->options['alter']['text'] = 'My custom text';
    break;
  }
}

अधिक जानकारी के लिए लिंक की जाँच करें वैश्विक रूप से विचारों के वैश्विक कस्टम पाठ क्षेत्र में मान कैसे डालें?

देखने में फ़ील्ड के रूप में nid जोड़ें और स्थिति के लिए उस फ़ील्ड का उपयोग करें जिसे आप निम्नानुसार हालत में जोड़ सकते हैं: if ($nid == '124') { $view->field['nothing']->options['alter']['text'] = $nid}

सरल तरीका यह है कि आप एक नया फ़ील्ड फ़ील्ड_वागा बनाएँ, जिसमें फ़ील्ड_वागा 1 नया नाम होगा यदि आप दृश्य में जाँच करते हैं और फिर आप लेबल को बदल सकते हैं और अपने कस्टम मान के साथ उस फ़ील्ड को ओवरराइड कर सकते हैं

if($view->result[0]->field_waga[0]['raw']['value'] == '10') {
//here you can create the field to act as custom text field and enter the custom //value
$view->result[0]->field_waga_1[0]['#markup'] = 'alter';
}

यह समाधान प्रत्येक फ़ील्ड को 'मेरा कस्टम टेक्स्ट' में बदल देता है, मैं केवल चुने हुए फ़ील्ड को बदलने के लिए और लिंक को बदलने के लिए एक विकल्प नहीं देख सकता (यदि फ़ील्ड को लिंक के रूप में प्रदर्शित करने के लिए संशोधित किया गया है)। दुर्भाग्य से मैं एक preprocess_views_view_fields () फ़ंक्शन का उपयोग नहीं कर सकता, जिसका उल्लेख आपके द्वारा दिए गए लिंक में किया गया है, क्योंकि अज्ञात (मेरे लिए);) इस फ़ंक्शन को इस विशिष्ट दृश्य के लिए निकाल नहीं दिया गया है।
dmk.it

आप निम्नानुसार स्थिति जोड़ सकते हैं: यदि ($ nid == '124') {$ दृश्य-> फ़ील्ड ['कुछ नहीं'] -> विकल्प ['परिवर्तन'] ['पाठ'] = $ nid}
harshal

अद्यतित उत्तर की जाँच करें
harshal

इस तरह से जोड़ा गया शर्त: यदि ($ दृश्य-> परिणाम [0] -> फ़ील्ड_वागा [0] ['कच्चे'] ['मूल्य'] == '10') {$ दृश्य-> क्षेत्र ['कुछ नहीं'] - > विकल्प ['परिवर्तन'] ['पाठ'] = 'परिवर्तन'; } यदि सभी क्षेत्रों की तुलना में पहली पंक्ति में '10' का मान है तो 'ALTER' का मान नहीं है। न केवल पहले, बल्कि सभी पंक्तियों, दुर्भाग्य से। मुझे लगता है कि यह एक वैश्विक परिवर्तन है और इसे चुनी गई पंक्तियों के लिए इस्तेमाल नहीं किया जा सकता है।
dmk.it 11

1
केवल एक फ़ील्ड_वाग न जोड़ें, जो आपके पास पहले से ही ऐड फ़ील्ड का उपयोग कर रहा है और फिर अपने कस्टम मानों को इनपुट करने के लिए कस्टम फ़ील्ड के रूप में उस फ़ील्ड का उपयोग करें
harshal

0

उपर्युक्त उत्तर के लिए एक अद्यतन के रूप में, मुझे इसके लिए TRUE में 'चेंज_टेक्स्ट' सेट करना होगा, जैसे कि काम करने के लिए, जैसे:

function hook_views_pre_render(&$view) {

  switch ($view->name) {
    case 'YOUR_VIEW_NAME':
    //  override the global custom text field value
    $view->field['nothing']->options['alter']['text'] = 'My custom text';
    $view->field['nothing']->options['alter']['alter_text'] = TRUE;

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