Làm thế nào tôi có thể truyền tham số cho một khối?


8

Có thể lập trình truyền tham số cho một khối không?

Câu trả lời:


7

Theo câu trả lời khác , các khối là 'ngu ngốc' và không có khả năng có các đối số 'được truyền vào'. Tuy nhiên, họ có thể lấy các đối số từ ngữ cảnh của trang, như ID nút, người dùng hiện tại, v.v.

Bạn có hai lựa chọn 'dễ dàng' thực sự:

  • Viết khối riêng của bạn: Nó khá dễ, nếu bạn có thể làm một chút PHP. Tạo một mô-đun và thực hiện hook_block () . Có rất nhiều ví dụ trên Drupal.org .
  • Sử dụng bảng điều khiển và / hoặc mô-đun Chế độ xem: Các bảng cho phép bạn tạo các bảng có thể có tất cả các loại biến và bối cảnh được truyền vào, NHƯNG không có chủ đề đặc biệt, khối sẽ phải sống trong khu vực nội dung, không phải là vùng Drupal; vì vậy nó phụ thuộc vào trang web của bạn và nơi bạn muốn chặn. Lượt xem cũng có thể tạo các khối và nhận đối số từ URL trang, người dùng hiện tại và mã tùy chỉnh thông qua mô-đun Lượt xem PHP . Lượt xem và bảng điều khiển làm việc với nhau rất tốt.

1
Nói chung cũng với bảng điều khiển, nếu chủ đề của bạn hỗ trợ nó, bạn có thể tắt tất cả các khối khác và hiển thị nội dung khác sẽ được nhận biết theo ngữ cảnh là các khối "giả".
Malks

2

Bạn không thể chuyển bất cứ thứ gì theo chương trình cho một khối AFAIK. Bạn có thể cho phép một khối có thể được cấu hình (sử dụng hook_block_configure trong D7). Ngoài ra, bạn có thể tạo chức năng chủ đề của riêng mình và bạn có thể truyền đối số cho điều đó. Bạn đang cố gắng làm gì vậy?


2

Định cấu hình bộ lọc theo ngữ cảnh, chọn "Cung cấp giá trị mặc định" = = "Mã php" và sử dụng đối số bạn muốn. ví dụ: return arg (1);


2

Đối với trường hợp chuyên biệt (nhưng phổ biến) trong đó khối của bạn là màn hình của Chế độ xem, bạn có thể sử dụng views_embed_viewđể hiển thị khối với các tham số mà nó có được thông qua các bộ lọc theo ngữ cảnh của Chế độ xem (nghĩa là thông thường từ URL).

Ví dụ:

print views_embed_view('news', 'panel_pane_1', 'world');

Bất kỳ tham số nào sau giây sẽ được chuyển dưới dạng giá trị bộ lọc theo ngữ cảnh cho khối.

Nguồn: Viết lại từ câu trả lời này của David Thomas , CC-BY-SA 3.0 được cấp phép

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.