Làm thế nào để thêm một biến vào một mẫu trường twig?


9

Trên trang nút tôi muốn thêm tiêu đề nút vào đầu ra cùng với một trường khác (trường ví dụ).

Tôi đã tạo một cái mới field--field-example.html.twignhưng không thể truy cập biến tiêu đề nút vì nó không có sẵn trong mẫu trường.

Tôi cần thêm các biến vào tiền xử lý chủ đề : themename.theme.

Làm cách nào để thêm biến vào themename.themevà mục tương ứng trong mục này là field--field-example.html.twiggì?


Sử dụng hook_pre process_node để trích xuất giá trị từ trường mà bạn muốn sử dụng trong mẫu.

@IvanJaros, tôi đã cập nhật câu hỏi ngay bây giờ.
Taylor Taff

Câu trả lời:


15

Vì bạn đã hỏi về việc chuyển tiêu đề nút dưới dạng một biến qua tệp .theme, bạn có thể sử dụng template_pre process_field để làm một cái gì đó như thế này:

  function themename_preprocess_field(&$variables, $hook) {
    if ($variables['element']['#field_name'] == 'field_example') {
      $variables['node_title'] = $variables['element']['#object']->getTitle();
    }
  }

sau đó, field--field-example.html.twigbạn chỉ cần sử dụng {{node_title}}để hiển thị tiêu đề nút.

Cũng xem câu trả lời của 4k4 bên dưới.


Tôi đã cố chỉnh sửa câu trả lời của bạn để bao gồm câu trả lời được cung cấp bởi 4k4 vì nó đúng nhưng bản chỉnh sửa của tôi đã bị từ chối vì nó được coi là không liên quan ...
Taylor Taff

@TaylorTaff ai phê duyệt chỉnh sửa? Tôi chưa bao giờ nhìn thấy nó. Sẽ cố gắng chỉnh sửa để bao gồm câu trả lời dưới đây.
Janey

@Janey nhiều người dùng có đủ huy hiệu có thể xem lại các chỉnh sửa đó. Tôi đã đánh dấu câu trả lời của bạn để xem xét trong tương lai. Một câu hỏi nữa: Các bạn có chắc $variables['element']['#object']->getTitle();là có thể bắt được preprocess_fieldkhông? Bởi vì điều này thực sự sẽ trả lời câu hỏi của tôi ở đây: drupal.stackexchange.com/questions/197497/ mẹo
nilsun

11

Có một đối tượng nút có sẵn trong các biến của mẫu trường, vì vậy bạn không cần một hàm tiền xử lý.

Để lấy tiêu đề từ nút trong mẫu trường:

{{ element['#object'].label }}

Điều này trả lời câu hỏi nhưng vì câu trả lời khác của Janey sẽ hữu ích hơn, tôi đã thêm câu này vào câu trả lời đó và được đánh dấu là chấp nhận.
Taylor Taff

1
Nhưng câu hỏi của bạn là giả định sai: "nhưng không thể truy cập biến tiêu đề nút vì nó không có sẵn trong mẫu trường."
4k4

Có 4k4, bạn đúng, câu hỏi của tôi không chính xác.
Taylor Taff
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.