प्रत्येक फ़ील्ड मान को व्यू-व्यू-अनफ़ॉर्मेट - व्यू-मशीन-name.html.twig में कैसे प्राप्त करें?


19

मेरे पास एक टहनी फ़ाइल है: दृश्य-दृश्य-विरूपित - view-machine-name.html.twig

{#
/**
 * @file
 * Default theme implementation to display a view of unformatted rows.
 *
 * Available variables:
 * - title: The title of this group of rows. May be empty.
 * - rows: A list of the view's row items.
 *   - attributes: The row's HTML attributes.
 *   - content: The row's content.
 * - view: The view object.
 * - default_row_class: A flag indicating whether default classes should be
 *   used on rows.
 *
 * @see template_preprocess_views_view_unformatted()
 *
 * @ingroup themeable
 */
#}
{% if title %}
  <h3>{{ title }}</h3>
{% endif %}
{% for row in rows %}
  {%
    set row_classes = [
      default_row_class ? 'views-row',
    ]
  %}
  <div{{ row.attributes.addClass(row_classes) }}>
    {{ row.content }}
  </div>
{% endfor %}

मैं चाहता हूँ कि Titleऔर body फ़ील्ड को अल्पविराम से अलग करके 1 पंक्ति में होना चाहिए:

शीर्षक, शरीर

डिबगिंग करते समय मैं इस दृश्य में 'शीर्षक' या 'बॉडी' या किसी अन्य क्षेत्र का मूल्य कैसे प्राप्त कर सकता हूं?

मैंने kint (शीर्षक) और kint (बॉडी) का उपयोग किया लेकिन यह काम नहीं कर रहा है। मैं भी debug = TRUE;सेवाओं फ़ाइल में बनाया है।

लेकिन विकृत html टहनी में फ़ील्ड मान रखने का तरीका समझ नहीं सकता।

जवाबों:


20

जैसा कि आप विचारों में देख सकते हैं- unformatted.html.twig , यह कहता है कि आपके द्वारा दिखाया गया टिप्पणी कोड भी क्या कहता है, कोई फ़ील्ड चर नहीं है। इसलिए, इस टेम्पलेट का उपयोग फ़ील्ड्स के लिए नहीं किया जाता है।

उपलब्ध चर:

  • शीर्षक: पंक्तियों के इस समूह का शीर्षक। खाली हो सकता है।
  • पंक्तियाँ: दृश्य की पंक्ति वस्तुओं की एक सूची।
    • विशेषताएँ: पंक्ति का HTML गुण।
    • सामग्री: पंक्ति की सामग्री।
  • दृश्य: दृश्य वस्तु।
  • default_row_class: यह दर्शाता है कि पंक्तियों पर डिफ़ॉल्ट कक्षाओं का उपयोग किया जाना चाहिए।

यदि आप किसी व्यू टेम्प्लेट में फ़ील्ड्स का उपयोग करना चाहते हैं, तो व्यू-व्यू-फील्ड्स - [व्यू-नेम] - [मशीन-नाम] .html.twig का उपयोग करें । वहां, आप अपने खेतों को इस तरह से प्रिंट कर सकते हैं:

<span>{{ fields.title.content }},</span><span>{{ fields.body.content }}</span>

अंडरस्कोर के साथ view_name रखा गया, जबकि अंडरस्कोर के साथ मशीन-नाम कॉमा में तब्दील हो गया
Matoeil

1
view-view-field.html.twig को / core / मॉड्यूल / views / टेम्प्लेट फ़ोल्डर से कॉपी किया जा सकता है और फिर इसका नाम बदल दिया जा सकता है। दिए गए दृश्य के लिए मशीन_नाम के साथ फ़ॉबर के लिए, फिर नया नाम दृश्य-दृश्य-फ़ील्ड हो सकता है - foobar.html.tig। नामकरण सम्मेलनों के बारे में अधिक जानकारी यहां उपलब्ध है: drupal.org/docs/8/theming/twig/twig-template-naming-conventions
bkudrle

13

मुझे Kint का उपयोग करके एक रास्ता मिल गया है, आप फ़ील्ड व्यू को व्यू-व्यू - unformatted.html.twig में प्राप्त कर सकते हैं

यदि आप एक विशिष्ट क्षेत्र चाहते हैं

पाठ फ़ील्ड मान प्राप्त करने के लिए

{{row.content['#row']._entity.field machine name[0].value}}

छवि फ़ील्ड पाने के लिए src

{{file_url(row.content['#row']._entity.field machine name.entity.uri.value)}}

छवि ऊंचाई, शीर्षक, चौड़ाई, ऊंचाई पाने के लिए

{{row.content['#row']._entity.field machine name[0].alt/title/width/height}}

नोट: फ़ील्ड मशीन का नाम अपने फ़ील्ड मशीन के नाम से बदलें

यदि आप कई फ़ील्ड के माध्यम से लूप करना चाहते हैं

{% for i in range(0, 10) %}
  {{ row.content['#row']._entity.body[i].value }}
{% endfor %}

यदि आप कच्चा मूल्य चाहते हैं

{% for i in range(0, 10) %}
  {{ row.content['#row']._entity.body[i].value|raw }}
{% endfor %}

7

मैं एक तरह से किंत का उपयोग कर लगा है।

अपने विचार-दृश्य-विरूपित.html.tw के अंदर अपने व्यक्तिगत फ़ील्ड प्रदर्शित करने के लिए निम्नलिखित कोड का उपयोग करें:

{% for row in rows %}

{{ row.content['#view'].style_plugin.render_tokens[ loop.index0 ]['{{ YOUR_FIELD_NAME }}'] }}

{% endfor %}

इमेज फील्ड का उपयोग कैसे करें जब मैं field_image का उपयोग करता हूं, तो कोई आउटपुट नहीं होता है। छवि URL प्रदर्शित या रेंडर नहीं कर रहा है!
हरीश एसटी

4

नीचे व्यू-व्यू- unformatted.html.twig फ़ाइल में फ़ील्ड मान तक पहुँचने के लिए नमूना कोड है -

{% for row in rows %}
  {% set photo = file_url(row['content']['#row']._entity.field_page_photo.entity.fileuri) %}          
  <li><img src={{ photo }} class="img-responsive img-circle"></li>
{% endfor %}

उत्तम! यही वह चीज है जो मैं जानना चाहता हूं, धन्यवाद रेणुका।
नीलाद्रि बनर्जी - उत्तरपारा

3

आपको टहनी फ़ाइलों का उपयोग करके विचारों को ओवरराइड करने के लिए तीन फाइलें बनाने की आवश्यकता है।
1. दृश्य-दृश्य - foobar.html.twig
2. दृश्य-दृश्य-विरूपित - foobar.html.twig
3. विचार-दृश्य-फ़ील्ड - foobar.html.twig

सभी तीन फ़ाइलों का उद्देश्य नीचे वर्णित है:
1: मुख्य दृश्य टेम्पलेट के लिए डिफ़ॉल्ट थीम कार्यान्वयन।
2: अकृत्रिम पंक्तियों का दृश्य प्रदर्शित करने के लिए डिफ़ॉल्ट थीम कार्यान्वयन।
3: एक पंक्ति में सभी फ़ील्ड प्रदर्शित करने के लिए डिफ़ॉल्ट दृश्य टेम्पलेट।

आपको अपने प्रत्येक फ़ील्ड को दृश्यों पर आउटपुट करने के लिए "व्यू-व्यू-फ़ील्ड्स - foobar.html.twig" का उपयोग करना चाहिए।

नीचे एक नमूना है:

<li>
<p>{{ fields.title.content }}</p> // Title field
<p>{{ fields.body.content }}</p> // Body field
<span>{{ fields.created.content }}</span> // Node authored date field
<a href="{{ fields.path.content }}" class="readmore"> read more </a> // Link to actual page
</li>

नमस्ते, मैंने ऊपर व्यू-व्यू- foobar.html.twig में कोशिश की है, लेकिन एक भी फ़ील्ड प्रिंट करने में सक्षम नहीं है। मैं kint () का उपयोग करके फ़ील्ड को डीबग करता हूं यह शीर्ष पर 'कुछ भी नहीं' सरणी दिखाता है।
शकील अहमद

0

मेरे अनुभव से, विचारों-विचारों-अनसुने - दृश्य-। Html में जुड़ने का कोई आसान तरीका नहीं है। इकाई संरचना का हिस्सा नहीं है।

किसी text (plain)क्षेत्र को मुद्रित करने के लिए बहुत । तो एक flag_field, entity_referenceऔर इतने पर मुद्रित करने के लिए दर्दनाक ।

पूरे व्यू कोर कोड से गुजरे बिना इसे हासिल करना, मुझे इस हैक का निर्माण करना था:

  1. एक नकली सादा पाठ फ़ील्ड इकाई जोड़ें
  2. कस्टम मॉड्यूल में दृश्य फ़ील्ड मान को हुक करें:
  3. टेम्पलेट में वांछित (आखिरकार) टहनी

अधिक विवरण यहाँ /drupal//a/288316/13760

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