मैं फ़ील्ड व्यू थीम टेम्पलेट में $ पंक्ति चर में फ़ील्ड मान कैसे एक्सेस करूं?


11

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

$ पंक्ति से आउटपुट लाते समय, इस निर्माण का उपयोग किया जाना चाहिए: $ डेटा = $ पंक्ति -> {$ फ़ील्ड-> फ़ील्ड_ली}

मेरे क्षेत्र को field_calendar_title कहा जाता है, लेकिन निम्नलिखित उम्मीद के मुताबिक काम नहीं करता है:

$row->{$field->field_calendar_title}

मुझे निम्नलिखित त्रुटि मिलती है:

घातक त्रुटि: खाली संपत्ति तक नहीं पहुंच सकता ...

क्या फ़ील्ड "उपनाम" सामग्री के प्रकार में फ़ील्ड के नाम से अलग है?

$ पंक्ति के var_dump से "क्लियर किया गया" आउटपुट:

stdClass Object
(
    [node_title] => ...
    [nid] => 568
    [field_data_field_performance_date_delta] => 0
    [field_data_field_performance_date_language] => und
    [field_data_field_performance_date_bundle] => event
    [field_data_field_performance_date_field_performance_date_val] => 2012-03-02 19:00:00
    [field_data_field_performance_date_node_entity_type] => node
    [_field_data] => Array
        (
            [nid] => Array
                (
                    [entity_type] => node
                    [entity] => stdClass Object
                        (
                            [vid] => 878
                            [uid] => 0
                            [title] => ...
                            [log] => 
                            [status] => 1
                            [comment] => 0
                            [promote] => 0
                            [sticky] => 0
                            [nid] => 568
                            [type] => event
                            [language] => und
                            [created] => 1329332968
                            [changed] => 1331836509
                            [tnid] => 0
                            [translate] => 0
                            [revision_timestamp] => 1331836509
                            [revision_uid] => 1
                            [body] => Array
                                (
                                    [und] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [value] => ...
                                                    [summary] => ...
                                                    [safe_summary] => ...
                                                )
                                        )
                                )
                                [field_resident_company] => Array ( [und] => Array ( [0] => Array ( [tid] => 3 ) ) )
                                [field_series] => Array ( [und] => Array ( [0] => Array ( [tid] => 36 ) ) )
                                [field_venue] => Array ( )
                                [field_rotator_image] => Array ( )
                                [field_exclude] => Array ( [und] => Array ( [0] => Array ( [value] => 0 ) ) )
                                [field_performance_image] => Array ( )
                                [field_premiere] => Array ( [und] => Array ( [0] => Array ( [value] => 1330714800 [timezone] => UTC [timezone_db] => UTC [date_type] => datestamp ) ) )
                                [field_closing] => Array ( [und] => Array ( [0] => Array ( [value] => 1330714800 [timezone] => UTC [timezone_db] => UTC [date_type] => datestamp ) ) )
                                [field_exclude_update] => Array ( [und] => Array ( [0] => Array ( [value] => 0 ) ) )
                                [field_performance_date] => Array ( [und] => Array ( [0] => Array ( [value] => 2012-03-02 19:00:00 [timezone] => UTC [timezone_db] => UTC [date_type] => datetime ) ) )
                                [field_performance_id] => Array ( [und] => Array ( [0] => Array ( [value] => 1436 [format] => [safe_value] => 1436 ) ) ) [field_event_status] => Array ( [und] => Array ( [0] => Array ( [value] => open ) ) )
                                [field_calendar_title] => Array ( [und] => Array ( [0] => Array ( [value] => PSYCHIC EXP [format] => [safe_value] => PSYCHIC EXP ) ) )
                                ...
                        )
) 

जवाबों:


10

के दिखता से var_dumpआप इस के साथ अपने क्षेत्र मूल्य को खोजने के लिए सक्षम होना चाहिए:

$row->_field_data['nid']['entity']->field_calendar_title['und'][0]['value'];

मैं वास्तव में आशा है कि वहाँ से एक बेहतर तरीका है!


क्षमा करें, मैंने अपने प्रश्न में वाक्य रचना को सही किया और यह अभी भी काम नहीं किया। यह भी कोशिश की और कोई भाग्य $ पंक्ति-> field_calendar_title;
कुछ

हम्म् ... मुझे लगता है कि त्रुटि संदेश $fieldअपरिभाषित है ... क्या आपने var_dump($row)यह देखने की कोशिश की है कि वास्तव में वहां क्या है? आप शायद क्षेत्र आप बहुत आसानी से के बाद :) रहे स्पॉट करेंगे
क्लाइव

अरे क्लाइव, हाँ मैं एक var_dump किया था और क्षेत्र फ़ील्ड मान के बाकी के साथ _field_data तहत मौजूद ...
SomethingOn

आप के उत्पादन में पॉप कर सकते हैं var_dump($row)एक संपादन के रूप में अपने प्रश्न में मैं मूल्य आप की जरूरत का पता करने में सक्षम हो सकता है
क्लाइव

@SomethingOn मैं जवाब नवीनीकृत किया है, है ना सुंदर है, लेकिन यह काम करना चाहिए :)
क्लाइव

7

एक सरल दृष्टिकोण:

$rendered_field = $view->render_field($fieldname, $view->row_index);

यहाँ, $ फ़ील्डनाम मूल है (दृश्य-अलियास नहीं) फ़ील्डनाम, उदाहरण के लिए 'field_myfield'।


3

शायद थोड़ा देर हो जाए, लेकिन भविष्य के संदर्भ के लिए यहां मेरा जवाब है:

वर्णन बहुत अस्पष्ट है, लेकिन आपको शाब्दिक उपयोग करना चाहिए:

$row->{$field->field_alias}

आपकी टेम्प्लेट फ़ाइल में यह भी नोट किया गया है कि:

चर उपलब्ध:

  • $ दृश्य: दृश्य वस्तु
  • $ फ़ील्ड: फ़ील्ड हैंडलर ऑब्जेक्ट जो इनपुट को संसाधित कर सकता है
  • $ पंक्ति: कच्चा SQL परिणाम जिसका उपयोग किया जा सकता है
  • $ आउटपुट: संसाधित आउटपुट जो सामान्य रूप से उपयोग किया जाएगा।

$ फ़ील्ड में फ़ील्ड_लिअस नामक फ़ील्ड है। तो $row->{$field->field_alias}वास्तव में, आपके मामले में, field_calendar_title को इंगित कर रहा है।

$ फ़ील्ड का var_dump बनाने का प्रयास करें और आप अपने लिए देखेंगे।

आशा है कि यह इस पोस्ट के पार आने में किसी की मदद करेगा।

Gerben


यह बहुत देर हो चुकी है, अभी भी ट्रेंडिंग सवाल नहीं है। 1. मैं राक्षसी @ क्लाइव के उदाहरण का उपयोग नहीं करना चाहता, हालांकि यह काम करता है। 2. मैं यह समझना चाहता हूं कि दिए गए चरों के साथ कैसे काम करना है: $ row, $ दायर, आदि। आपका सुझाव केवल एक नंबर देता है (शायद nid या smth) ), लेकिन मैं अपने क्षेत्र तक कैसे पहुंच सकता हूं। क्या होगा यदि मेरे पास दो अलग-अलग फ़ील्ड हैं जो मैं प्राप्त करना चाहता हूं?
वलदक्रास

-2

सबसे सरल तरीका है: $ फ़ील्ड ["फ़ील्ड_नाम"] -> सामग्री; जहाँ field_name -> cck फ़ील्ड नाम।

उम्मीद है कि मदद मिलेगी !!

चियर्स! राज


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