Điểm:1

Thay đổi mẫu tùy chỉnh từ mã

lá cờ pt

Làm cách nào tôi có thể lập trình loại bỏ các khối và các thành phần khác khỏi một mẫu tùy chỉnh duy nhất?

Trong mô-đun tùy chỉnh của mình, tôi đã xác định tuyến đường đến bộ điều khiển, sau đó tải một mẫu cũng được chứa trong cùng một mô-đun. Tôi đang tải thành công dữ liệu từ bộ điều khiển vào mẫu.

Vấn đề của tôi là mẫu kế thừa các khối và menu từ chủ đề đang hoạt động mà tôi cần xóa nhưng chỉ trong mẫu mô-đun. Ví dụ: các khối tìm kiếm và điều hướng chính không được phép hiển thị.

tôi đã thực hiện:

chức năng mymodule_export_pre process_page(&$variables)
{
  unset($variables['page']['header']['searchform']);
  unset($variables['page']['menu_primary']);
}

Nhưng sau đó tôi nhận ra rằng các khối tìm kiếm và điều hướng đã bị xóa không chỉ trong mẫu mô-đun mà còn ở mọi trang trên trang web.

Tôi cũng tìm kiếm một cái gì đó như hook_page_alter mà không thể tìm thấy bất cứ điều gì thích hợp cho nhiệm vụ.

Điểm:2
lá cờ bd

Tôi nghĩ bạn đang nhầm lẫn các chủ đề và mẫu.

Một chủ đề là một tập hợp các tệp kiểm soát việc hiển thị trang web của bạn thông qua việc sử dụng các tệp mẫu, CSS và Javascript (chủ yếu là vậy, sẽ có nhiều hơn nếu bạn tìm hiểu).

Một tệp mẫu chỉ là một trong những tệp đó trong một chủ đề.

Vì vậy, lý do mà logic trong của bạn hook_pre process_page ảnh hưởng đến mọi trang, tức là bạn áp dụng những sửa đổi đó một cách vô điều kiện. Các hook tiền xử lý đó (khi được xác định trong một mô-đun) được áp dụng cho chủ đề đang hoạt động cho bất kỳ yêu cầu trang nào, bất kỳ chủ đề nào được sử dụng.

Hơi khó để đề xuất một giải pháp cụ thể trong trường hợp của bạn mà không cần xem thêm mã, ví dụ: từ bộ điều khiển của bạn, nhưng bạn có thể thử một cái gì đó dọc theo những dòng này (mã giả):

function mymodule_export_pre process_page(&$variables) {
  if (\Drupal::routeMatch()->getRouteName() === 'route.to.controller') {
    unset($variables['page']['header']['searchform']);
    unset($variables['page']['menu_primary']);
  }
}
lá cờ pt
Cảm ơn Berliner. Tôi đã quá đầu tư vào một giải pháp định hướng hook và quên tất cả về câu lệnh if khiêm tốn

Đă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.