Kết xuất trường nút bên trong page.html.twig


12

Tôi có một trường hình ảnh trên loại nội dung của mình (field_hero_image).

Tôi không muốn nó hiển thị trong tệp node.html.twig. Tuy nhiên, tôi muốn hiển thị nó trong tệp page.html.twig. Cụ thể, tôi muốn kết xuất nó cùng với tiêu đề trang.

Tôi sẽ sử dụng mã nào trong tệp page.html.twig của mình để truy cập các trường cấp nút và hiển thị chúng?

(Có một câu hỏi tương tự được đăng, nhưng tôi không thể sử dụng câu trả lời được cung cấp ở đó để giải quyết vấn đề của mình.)

Điều này cho Drupal 8 theo chủ đề.


2
@kiamlaluno - tại sao bạn chỉnh sửa câu hỏi của tôi ?? Có "Drupal 8" trong tiêu đề VÀ trong câu hỏi làm cho các nhà cung cấp dịch vụ tiềm năng rõ ràng VÀ dễ dàng tìm thấy hơn ở Google, với sự phổ biến của nội dung Drupal 6 và 7 ngoài kia; làm cho Drupal 8 câu hỏi / câu trả lời rất rõ ràng rất hữu ích cho cộng đồng đang tìm kiếm câu trả lời cụ thể của D8. Đã tự hỏi lý do của bạn để thay đổi nó là gì.
kraftybasterd

Vui lòng không trùng lặp thẻ trong tiêu đề câu hỏi; các thẻ được hiển thị ở mọi nơi một câu hỏi được hiển thị, do đó không cần sử dụng các thẻ trong tiêu đề câu hỏi.
kiamlaluno

2
Thật đáng ngạc nhiên, tôi mới ở đây ... nhưng các thẻ meta (trong trường hợp này là "8") có giúp gì cho kết quả của công cụ tìm kiếm không? Tôi cảm thấy như các tiêu đề nội dung có chứa Drupal 8 hoặc Drupal 7 có khả năng giúp mọi người tìm kiếm câu trả lời thông qua Google ... chỉ là một ý tưởng.
kraftybasterd

Câu trả lời:


24

Sau khi thực hiện nghiên cứu thêm một chút, tôi đã có thể tìm thấy đủ các phần trong các câu hỏi khác và trên drupal.org để đạt được những gì tôi muốn làm.

Không có tiền xử lý là cần thiết cho câu trả lời này, vì vậy không cần thêm mã vào tập tin mysteme.theme của bạn.
Tất cả các biến này đều có thể truy cập được trong page.html.twig theo mặc định.

Để hiển thị giá trị mặc định của trường bên trong page.html.twig, bạn thường sử dụng biến Twig như trong {{ node.field_some_name.value }}.

Nếu bạn có trường hình ảnh và muốn kết xuất URL thành hình ảnh được lưu trữ trong trường đó bên trong mẫu page.html.twig, bạn sẽ sử dụng {{ file_url(node.field_some_image.entity.fileuri) }}.

Cuối cùng, nếu bạn muốn hiển thị tiêu đề của một nút bên trong mẫu page.html.twig, bạn sẽ sử dụng {{ node.label }}.

Tôi cũng đã học cách sử dụng một số điều kiện Twig cho vấn đề cụ thể của mình, nhưng điều đó nằm ngoài phạm vi của câu hỏi / câu trả lời này.


Tôi đã hoài nghi, có ấn tượng rằng trong D7 loại điều này phải luôn luôn là ví dụ như một chức năng tiền xử lý. Tuy nhiên, ví dụ về file_url()trong các tài liệu ( drupal.org/docs/8/theming/twig/fifts-in-twig-temsheet ) thực hiện chính xác điều này, do đó, được nâng cấp.
Graham C

Làm thế nào để bạn lặp qua một loại nội dung cụ thể và xuất các giá trị trường của nó bên trong page.html.twig?
Naourass Derouichi

2

Có ba phương pháp hữu ích để làm việc với điều này, tất cả đều giúp bạn tiết kiệm thời gian đào các mảng kết xuất phức tạp.

  1. Sử dụng Display Suite (với mô hình con DS_extras), bạn có thể gán cho vùng anh hùng một khối ("vùng khối") là chế độ hiển thị khác (tức là chỉ có một hình ảnh chứa anh hùng). Do đó, bạn nhận được hai chế độ hiển thị khác nhau hiển thị cùng một lúc. Lưu ý rằng một số móc tiền xử lý có thể không kích hoạt như bạn mong đợi nếu bạn làm điều này.

  2. Các mô-đun twig_tweak làm đơn giản hóa các nhiệm vụ như vậy và có thể cung cấp cho báo cáo cành lá dễ dàng hơn cho giá trị trường. Hãy xem bảng cheat cho một số cách sử dụng phổ biến: {{ drupal_field('field_image', 'node', 1) }}Chữ ký hàm là:drupalField($field_name, $entity_type, $id = NULL, $view_mode = 'default', $langcode = NULL)

  3. Các twig_field_value mô-đun làm báo cáo cành lá đơn giản hơn. Mỗi README.txt:<img src={{ file_url(content.field_image|field_target_entity.uri.value) }} alt={{ content.field_image|field_raw('alt') }} />

Nếu tôi biết điều này sớm hơn, nó sẽ giúp tôi tiết kiệm rất nhiều thời gian!


1
Đây là câu trả lời chính xác. Theo kinh nghiệm của tôi, {{ node.field_some_name.value }}không kết xuất trường. Nó không gọi hệ thống chủ đề đầy đủ (chức năng tiền xử lý, mẫu, v.v.). OTOH, nếu bạn sử dụng twig_tweakmô-đun, bạn có thể nhận được trường được hiển thị đầy đủ với{{ node.field_some_name|view }}
kentr
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.