วิธีรับค่าแต่ละฟิลด์ใน views-views-unformatted - view-machine-name.html.twig


19

ฉันมีไฟล์กิ่งไม้: views-view-unformatted - 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

ดังที่คุณเห็นในviews-view-unformatted.html.twigมันบอกว่าโค้ดที่คุณแสดงความคิดเห็นยังแสดงว่าอะไรไม่มีตัวแปรฟิลด์ ดังนั้นเทมเพลตนี้ไม่ได้ใช้สำหรับฟิลด์

ตัวแปรที่มี:

  • หัวเรื่อง: ชื่อเรื่องของกลุ่มแถวนี้ อาจว่างเปล่า
  • rows: รายการของรายการแถวของมุมมอง
    • คุณสมบัติ: แอตทริบิวต์ HTML ของแถว
    • เนื้อหา: เนื้อหาของแถว
  • มุมมอง: วัตถุมุมมอง
  • default_row_class: ธงระบุว่าควรจะใช้คลาสเริ่มต้นในแถว

หากคุณต้องการที่จะใช้เขตข้อมูลในแม่แบบมุมมองการใช้มุมมองการรับชมทุ่ง - [ดูชื่อ] - [เครื่องชื่อ] .html.twig ที่นั่นคุณสามารถพิมพ์ฟิลด์ของคุณดังนี้:

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

view_name ที่มีเครื่องหมายขีดเส้นใต้เก็บไว้ในขณะที่ชื่อเครื่องที่มีเครื่องหมายขีดล่างเปลี่ยนเป็นเครื่องหมายจุลภาค
Matoeil

1
views-view-fields.html.twig สามารถคัดลอกได้จากโฟลเดอร์ / core / modules / views / templates แล้วเปลี่ยนชื่อตามข้างต้น สำหรับมุมมองที่กำหนดด้วย machine_name ของ foobar ชื่อใหม่สามารถเป็น views-view-fields - foobar.html.twig ข้อมูลเพิ่มเติมเกี่ยวกับการตั้งชื่อการประชุมมีอยู่ที่นี่: 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

ฉันคิดวิธีใช้ kint

ข้างใน views-view-unformatted.html.twig ของคุณใช้รหัสต่อไปนี้เพื่อแสดงฟิลด์ของคุณ:

{% for row in rows %}

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

{% endfor %}

วิธีใช้ Image Field เมื่อฉันใช้ field_image จะไม่มีผลลัพธ์ URL รูปภาพไม่แสดงหรือแสดงผล!
Harish ST

4

ด้านล่างเป็นรหัสตัวอย่างในการเข้าถึงค่าฟิลด์ในไฟล์ views-view-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 %}

ที่สมบูรณ์แบบ! นั่นคือสิ่งที่ฉันอยากรู้ขอขอบคุณ Renuka
Niladri Banerjee - Uttarpara

3

คุณต้องสร้างสามไฟล์เพื่อแทนที่มุมมองโดยใช้ไฟล์ทวิก
1. views-view - foobar.html.twig
2. views-view-unformatted - foobar.html.twig
3. views-view-fields - foobar.html.twig

วัตถุประสงค์ของทั้งสามไฟล์มีการอธิบายไว้ด้านล่าง:
1: การใช้ธีมเริ่มต้นสำหรับเทมเพลตมุมมองหลัก
2: การใช้ชุดรูปแบบเริ่มต้นเพื่อแสดงมุมมองของแถวที่ไม่ได้จัดรูปแบบ
3: เทมเพลตมุมมองเริ่มต้นเพื่อแสดงฟิลด์ทั้งหมดในแถว

คุณควรใช้ "views-view-fields - 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>

สวัสดีฉันได้ลองด้านบนใน views-view-foobar.html.twig แล้ว แต่ไม่สามารถพิมพ์ฟิลด์เดียวได้ ฉันตรวจแก้จุดบกพร่องฟิลด์โดยใช้ kint () มันแสดงให้เห็นอาร์เรย์ 'ไม่มีอะไร' ที่ด้านบน
Shakil Ahmad

0

จากประสบการณ์ของฉันไม่มีวิธีง่าย ๆ ในการ twig ใน views-views-unformatted - view-.html.twig ค่าจากฟิลด์ที่ไม่ได้เป็นส่วนหนึ่งของโครงสร้างเอนทิตี

พิมพ์text (plain)ฟิลด์ได้มาก ดังนั้น painfull พิมพ์flag_field, entity_referenceและอื่น ๆ

ต้องสำเร็จโดยไม่ต้องดูรหัส core ทั้งหมดฉันต้องสร้างแฮ็คนี้:

  1. เพิ่มเอนทิตีฟิลด์ข้อความปลอมธรรมดา
  2. ขอค่าเขตข้อมูลมุมมองในโมดูลที่กำหนดเอง:
  3. twig (สุดท้าย) ค่าที่ต้องการในเทมเพลต

รายละเอียดเพิ่มเติมได้ที่นี่ /drupal//a/288316/13760

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.