Điểm:0

Làm cách nào tôi có thể thêm đề xuất mẫu nút theo tiêu đề nút?

lá cờ in

Twig gỡ lỗi đang đề xuất nút--4.html.twig làm tệp mẫu cho nút có ID là 4. Vì ID nút thay đổi khi thay đổi môi trường nên tôi cần sử dụng tệp mẫu có tên dựa trên tiêu đề nút.

Có một cách đơn giản để đạt được điều này?

Tôi đang sử dụng Drupal 9.

MrD avatar
lá cờ cn
MrD
Bạn có thể sử dụng hook_theme_suggestions_node_alter để thêm mẫu đề xuất khác.
lá cờ in
@LesLim Tôi đã cập nhật câu hỏi để phản ánh thực tế là tôi đang sử dụng Drupal 9, cảm ơn bạn!
lá cờ in
@MrD Tôi cũng đang sử dụng Trình đề xuất mẫu Twig và nó cũng không tìm ra bất kỳ điều gì hữu ích về vấn đề này.
MrD avatar
lá cờ cn
MrD
@johnny_n Bạn có thể bật bí danh cho nút và thêm đề xuất theo url giống với đề xuất trang.
sonfd avatar
lá cờ in
Bạn có thể không muốn sử dụng trường tiêu đề cho việc này. Có thể tạo một trường đặc biệt để xác định đề xuất mẫu này. Nếu bạn thực sự cần nó cho chỉ một trang, bạn có thể đặt giá trị của trường rồi xóa trường khỏi màn hình biểu mẫu của loại nội dung để không thể thay đổi sau này. Sẽ là một lực cản thực sự nếu một thay đổi tiêu đề đơn giản làm hỏng bố cục trang của bạn!
lá cờ in
@sonfd - Cuộc gọi tốt. Và cảm ơn MrD vì lời khuyên bổ sung. Điều này đã được hữu ích không ngờ, cảm ơn bạn!
Điểm:1
lá cờ de

Theo nhận xét của MrD, hook_theme_suggestions_hook_alter là chìa khóa (xem tài liệu về hook này) hoặc hook_theme_suggestions_alter() nếu bạn muốn thêm đề xuất cho một số loại thực thể.

Nó sẽ cho phép bạn thêm các đề xuất mẫu mà bạn đang thiếu.

function yourTheme_theme_suggestions_node_alter(mảng &$suggestions, mảng $variables) {
  // Sử dụng biến $variables để lấy dữ liệu liên quan đến nút của bạn
  // ví dụ. $node = $variables["elements"]["#node"] để lấy đối tượng Node của bạn

  // Sử dụng biến mảng $suggestions để thêm (các) đề xuất tùy chỉnh của bạn vào danh sách
  // ví dụ. $suggestions[] = "nút__" . "gợi ý của tôi";
}

Sau đó, thêm nút tệp mẫu của bạn--myawesomesuggestion.html.twig vào chủ đề của bạn và bạn sẽ hoàn thành nó.

lá cờ in
Cảm ơn bạn @misterdidi - bạn hoàn toàn đúng. Đánh giá cao sự làm rõ, tôi đã hiểu sai bản chất của cái móc.
Điểm:0
lá cờ us

Mô-đun Nút không thêm đề xuất mẫu bao gồm tiêu đề nút, trong nút_theme_suggestions_node(). Các mô-đun và chủ đề có thể thay đổi các đề xuất hiện có đang triển khai hook_theme_suggestions_HOOK_alter().
Một điểm cần lưu ý là tên mẫu được đề xuất chỉ nên chứa các ký tự được cho phép trong tên hàm PHP.

Đối với tiêu đề nút, tôi sẽ sử dụng đoạn mã sau.

function mymodule_theme_suggestions_node_alter(mảng &$suggestions, mảng $variables) {
  $node_title = \Drupal::transliteration()->transliterate($variables['elements']['#node']->getTitle());
  $suggestions[] = 'nút__' . preg_replace('/[^a-z0-9_]+/', '_', mb_strtolower($node_title));
}

Mã để thay thế các ký tự không nên có trong tên hàm PHP giống như được sử dụng từ media_theme_suggestions_media()$provider_id.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.