Làm cách nào để ghi đè mẫu Twig trong Drupal 8?

Tôi muốn có một tiêu đề khác khi mô-đun tùy chỉnh của tôi đang hoạt động. Mã tiêu đề của tôi nằm trong chủ đề của tôi page.html.twig. Tôi muốn ghi đè mẫu đó trong mô-đun của riêng mình

Có hai bước

  1. Tạo mẫu mới trong mô-đun của bạn
  2. Yêu cầu mô-đun ghi đè cùng một mẫu trong chủ đề với hook_theme_registry_alter trong tệp .module của tôi

Tạo mẫu page.html.twig mới

Sao chép mẫu page.html.twig hiện có từ chủ đề vào thư mục /templates trong mô-đun của bạn mà chúng tôi sẽ gọi là my_module. Thực hiện những thay đổi bạn cần

Ghi đè mẫu của chủ đề

Các mẫu chủ đề sẽ được ưu tiên hơn các mẫu mô-đun. Chúng tôi phải sử dụng hook_theme_registery_alter trong tệp .module của mô-đun tùy chỉnh của chúng tôi

Trong page.html.twig1

/**
* Implements hook_theme_registry_alter
*/
function my_module_theme_registry_alter[&$theme_registry] {
$theme = \Drupal::theme[]->getActiveTheme[]->getName[];
if [$theme == 'my_theme'] {
$theme_registry['page']['path'] = drupal_get_path['module', 'my_module'] . '/templates';
}
}

Thay đổi my_modulepage.html.twig3 được in đậm bằng tên máy của mô-đun và chủ đề của bạn

Tôi muốn đảm bảo rằng mô-đun của tôi không ghi đè chủ đề quản trị. Vì vậy, trình bao bọc page.html.twig4 sẽ kiểm tra chủ đề phù hợp trước

Nếu bạn đặt mẫu của mình trong một thư mục con như page.html.twig5 trong dòng page.html.twig6 từ page.html.twig7 đến page.html.twig8

Trong bài đăng này, bạn sẽ tìm hiểu cách tạo chủ đề cho các chế độ xem Drupal 8 bằng cách ghi đè các mẫu chế độ xem mặc định và sử dụng đánh dấu của riêng chúng tôi để tạo đàn accordion [dựa trên ]. Chúng tôi sẽ bắt đầu bằng cách xác định một chủ đề tùy chỉnh cho trang web Drupal 8 mới được cài đặt của chúng tôi và thêm các tệp css và javascript bootstrap 3

Đây là tất cả những gì chúng ta cần để tạo một chủ đề mới

    ├── demotheme.info.yml
    ├── demotheme.libraries.yml
    ├── css
    │   ├── bootstrap-theme.min.css
    │   └── bootstrap.min.css
    └── js
        └── bootstrap.min.js

Sau đó, chúng tôi sẽ tạo một chế độ xem mới từ "quản trị viên/cấu trúc/lượt xem/thêm" để hiển thị các bài viết được thêm mới nhất

  • Xem thông tin cơ bản. Chúng tôi sẽ đặt tên cho chế độ xem của mình là "Bài báo Accordion" [tên máy. "articles_accordion"]
  • Giao diện cài đặt. Chọn [Hiển thị. Nội dung], [thuộc loại. Bài báo] và [sắp xếp theo. Mới đầu]
  • Cài đặt trang. Kiểm tra "Tạo trang" và đặt "Tiêu đề trang" và "Đường dẫn" theo ý thích của bạn. Trong "Cài đặt hiển thị trang", chọn [Định dạng hiển thị. danh sách chưa định dạng], [của. lĩnh vực]
  • Nhấp vào "Lưu và chỉnh sửa"

Đây là một ảnh chụp màn hình cho chế độ xem cài đặt ban đầu của chúng tôi

Sau khi lưu chế độ xem, chúng tôi sẽ nhấp vào "Nội dung. Tiêu đề" và bỏ chọn "Liên kết đến Nội dung", sau đó thêm trường "Nội dung"

Đây là ảnh chụp màn hình để xem cài đặt cuối cùng

Hiểu các mẫu xem

Các mẫu mặc định của chế độ xem được đặt trong thư mục "/core/modules/views/templates/"

Mỗi chế độ xem sử dụng tối thiểu hai mẫu

  • Mẫu đầu tiên là "lượt xem-lượt xem. html. cành cây". Mẫu này được sử dụng cho tất cả các chế độ xem và chứa bố cục cho chế độ xem. [xem nội dung, đầu trang, chân trang, biểu mẫu hiển thị và tệp đính kèm]
  • Mẫu thứ hai là mẫu kiểu. Mẫu được sử dụng mặc định sẽ thay đổi dựa trên kiểu xem được áp dụng [lưới, bảng, danh sách html hoặc không được định dạng]
    • lưới. lượt xem-xem-lưới. html. cành cây
    • Bàn. lượt xem-xem-bảng. html. cành cây
    • Danh sách HTML. lượt xem-xem-danh sách. html. cành cây
    • chưa định dạng. lượt xem-xem-không được định dạng. html. cành cây
  • Mẫu thứ ba là "lượt xem-lượt xem. html. cành cây". Mẫu này chỉ được sử dụng nếu kiểu hàng xem được đặt thành "Trường". Mẫu này chịu trách nhiệm lặp qua các trường có sẵn và in các trình bao bọc, nhãn và đánh dấu trường
  • Mẫu thứ tư là "view-view-field. html. cành cây". Mẫu này chỉ được sử dụng nếu kiểu hàng xem được đặt thành "Trường". Đây là mẫu cuối cùng và chịu trách nhiệm in từng đánh dấu trường

Đặt tên cho các mẫu xem

Mỗi loại mẫu xem ở trên có thể được ghi đè bằng nhiều tên khác nhau. Tên mẫu là sự kết hợp của [tên mẫu cơ sở, tên máy xem, loại hiển thị xem và id hiển thị xem - được phân tách bằng 2 dấu gạch nối "--"]

Sau đây là các tên mẫu có thể được sắp xếp theo mức độ ưu tiên

  • [tên mẫu cơ sở]--[xem tên máy]--[xem id hiển thị]. html. cành cây
  • [tên mẫu cơ sở]--[xem tên máy]--[xem loại hiển thị]. html. cành cây
  • [tên mẫu cơ sở]--[xem loại hiển thị]. html. cành cây
  • [tên mẫu cơ sở]--[xem tên máy]. html. cành cây
  • [tên mẫu cơ sở]. html. cành cây

Ví dụ; . html. twig" cho chế độ xem của chúng tôi, các tên mẫu sau đây là hợp lệ

  • [tên mẫu cơ sở]--[xem tên máy]. html. cành cây
  • lượt xem-xem-bài viết-accordion--trang. html. cành cây
  • lượt xem-xem-trang. html. cành cây
  • lượt xem-xem-bài viết-accordion. html. cành cây
  • lượt xem. html. cành cây

Xây dựng Bootstrap Accordion của chúng tôi

Để xây dựng phiên bản đàn accordion bootstrap của chúng tôi, chúng tôi sẽ cần ghi đè "lượt xem-lượt xem-không được định dạng. html. twig" [vì đây là phong cách được sử dụng] và "view-view-fields. html. cành cây"

Cách dễ nhất để bắt đầu là sao chép các mẫu từ thư mục /core/modules/views/templates vào thư mục chủ đề của chúng tôi và sau đó đổi tên thành "views-view-unformatted. html. twig" thành "view-view-unformatted--articles-accordion--page-1. html. twig" và "view-view-fields. html. twig" thành "lượt xem-lượt xem--bài viết-accordion--trang. html. cành cây"

 

{% cho hàng trong hàng %} {% set row_classes = [ default_row_class?

{{ chèo thuyền. nội dung }}

{% endfor %}

 

{{ lĩnh vực. cơ thể người. nội dung }}

Đây là cách đàn accordion của chúng ta trông như thế nào

Bình luận

By Kwad [chưa được xác minh] Thứ Năm, ngày 21 tháng 1 năm 2016 - 20. 58

Xin chào,
Bạn sử dụng cái gì làm chủ đề cơ bản?
Bạn có thể cung cấp nội dung của bạn trong demotheme. thông tin. yml và demotheme. thư viện. yml?
Cảm ơn bạn cho bài viết tuyệt vời của bạn

bởi muhammad. reda Thứ sáu, 22 Tháng một, 2016 - 10. 27

Trả lời bởi Kwad [chưa được xác minh]

By Kwad [chưa được xác minh] Thứ Sáu, ngày 22 tháng 1 năm 2016 - 20. 04

Trả lời bởi muhammad. làm lại

Tôi đã tự hỏi nếu chủ đề cơ sở ổn định không được sử dụng khi chúng tôi không viết dòng trong chủ đề. thông tin

chủ đề cơ bản. ổn định

Bạn có nghĩ rằng nó sai theo mặc định [không ổn định] không?
Cảm ơn nhiều

bởi muhammad. reda Thứ năm, 04 Tháng hai 2016 - 04. 06

Trả lời bởi Kwad [chưa được xác minh]

Bởi martin [chưa được xác minh] Thứ Sáu, ngày 22 tháng 1 năm 2016 - 18. 34

tại sao, bạn đặt tên cho nó là khối 1 chứ không chỉ khối, nó có liên quan gì đến việc mở rộng không? . e có thêm thuộc tính vào field_image trong chế độ xem không?

bởi muhammad. reda Thứ Năm, 04 Tháng 2 2016 - 05. 13

Trả lời bởi martin [chưa được xác minh]

By MrPoo [chưa được xác minh] Thứ Hai, ngày 30 tháng 5 năm 2016 - 21. 08

Trả lời bởi muhammad. làm lại

Xin chào,
Tôi nghĩ mẫu chính xác là [tên mẫu cơ sở]--[xem tên máy]--[id hiển thị]--[tên trường]. html. twig [tôi đoán bạn đã gõ sai mẫu ở trên]
và ví dụ là "view-view-field-articles-accordion--page-1--field-image. html. cành cây"

Bởi oliver [chưa được xác minh] Thứ bảy, ngày 2 tháng 4 năm 2016 - 13. 40

Có thể cung cấp tiêu đề phụ cho nội dung trong chế độ xem không?

Bởi Ralph [chưa được xác minh] Thứ Ba, ngày 14 tháng 6 năm 2016 - 21. 08

Làm tốt lắm, tôi đánh giá cao sự giúp đỡ và dành thời gian để đăng một cái gì đó hữu ích

Bởi James [chưa được xác minh] Thứ Tư, ngày 17 tháng 8 năm 2016 - 17. 11

Xin lỗi vì câu hỏi của người lạ, làm cách nào bạn có thể lấy dữ liệu bằng cách gọi các trường. nội dung. tiêu đề và lĩnh vực. nội dung. cơ thể người?

Mẫu Twig trong Drupal 8 là gì?

Twig là công cụ mẫu cho PHP và nó là một phần của khung Symfony2. Vì Drupal 8 Twig thay thế PHPTemplate làm công cụ tạo khuôn mẫu mặc định. Một trong những kết quả của sự thay đổi này là tất cả các hàm theme_* và PHPTemplate dựa trên *.

Chúng ta có thể xác định chức năng Twig tùy chỉnh ở đâu?

Chúng được định nghĩa trong lớp TwigExtension . Bạn cũng có thể xác định các hàm Twig tùy chỉnh của riêng mình trong một mô-đun tùy chỉnh [nhưng không phải trong một chủ đề]. Để tìm ví dụ về cách thực hiện việc này, hãy xem ví dụ này trong core/modules/system/tests/modules/twig_extension_test/src/TwigExtension/TestExtension.

Tinh chỉnh Twig trong Drupal là gì?

Twig Tweak là một mô-đun nhỏ cung cấp tiện ích mở rộng Twig với một số chức năng và bộ lọc hữu ích có thể cải thiện trải nghiệm phát triển .

Chủ Đề