Điểm:0

Trong một mẫu nút, làm cách nào tôi có thể biết khu vực nào đang được sử dụng/chiếm dụng?

lá cờ kr

Tôi đang cố gắng tạo một hàm tiền xử lý trong tệp .theme của mình để cung cấp một biến cho các mẫu nút.

Tôi muốn biến chỉ chứa tên của tất cả các vùng hiện đang được sử dụng (tức là hiển thị nội dung).

Ý tưởng là, nếu tôi có một vùng gọi là left_hand_nav được hiển thị trên một số trang (không phải tất cả) và tôi có một nút gọi là generic_page, từ mẫu nút generic_page của tôi, tôi muốn có thể thực hiện:

{% nếu left_hand_nav %}
 làm việc gì đó
{% khác %}
 làm việc gì khác
{% endif %}

Tôi không quan tâm đến việc kiểm soát việc hiển thị bất kỳ khối vùng nào từ mẫu nút. Thay vào đó, đối với bất kỳ trang cụ thể nào trong đó nút được hiển thị, tôi chỉ muốn biết liệu một vùng cụ thể trên trang đã nói có đang được sử dụng hay không.

Tôi nhận thấy điều này có thể được thực hiện rất dễ dàng từ một mẫu trang nhưng thay vì có hàng triệu tỷ điều kiện trong mẫu trang của mình, tôi muốn có một vài điều kiện trong một số mẫu nút.

Nếu ai đó có thể chỉ cho tôi đi đúng hướng, tôi sẽ đánh giá rất cao.

sonfd avatar
lá cờ in
Bạn đang nói về việc liệu các vùng trong mẫu page.html.twig của bạn có nội dung hay không, tức là các vùng được xác định trong tệp .info.yml của chủ đề của bạn?
abe-cedarian avatar
lá cờ kr
@sonfd có nhưng tôi muốn biết từ bên trong các mẫu nút.
lá cờ ru
Tôi có thể thấy động lực cho điều này từ quan điểm của nhà phát triển giao diện người dùng, nhưng kiến ​​trúc của Drupal (bộ nhớ đệm thực thể, BigPipe, ...) Tôi e rằng không có cách nào *đúng* cho việc này.
Điểm:1
lá cờ cn

Trong trường hợp đặc biệt khi điều hướng đến trang nút (chẳng hạn như khi xem bài viết), bạn có thể thấy rằng khi triển khai hook_pre process_page , $variables có chứa giá trị 'nút', nếu bạn thêm bất kỳ thuộc tính nào vào $variables['node'] của mình, bạn sẽ có thể sử dụng nó trong tệp node.html.twig

Cập nhật

Như trong hook_pre process_page, bạn có thể truy cập tất cả các vùng bằng cách sử dụng $variables['REGION_NAME'] , để bạn có thể kiểm tra xem chúng có trống hay có nội dung hay không, nếu chúng không trống, bạn có thể lưu tên của chúng vào một mảng rồi áp dụng mảng đó đến $variables['node']

4uk4 avatar
lá cờ cn
Bạn không thể đặt thuộc tính trong $variables['node']. Đối tượng nút được lưu trữ tĩnh và tất cả các biến tham chiếu đến đối tượng này đều có chung một thể hiện. Ngoài ra, trang và nút được xử lý và lưu vào bộ nhớ cache độc ​​lập với nhau và bạn không biết cái nào được xử lý trước.Hầu hết các lần chúng thậm chí không được xử lý trong cùng một yêu cầu vì trang và nút được lưu trữ trong các khóa/khóa bộ đệm khác nhau và với siêu dữ liệu bộ đệm khác nhau.
abe-cedarian avatar
lá cờ kr
Cảm ơn bạn @4k4 đã giải thích lý do tại sao nó không hoạt động.

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