Mở rộng một khối
Để mở rộng khối, bạn sẽ xác định một khối mới, như được mô tả trong hướng dẫn sau, ngoại trừ việc bạn sẽ mở rộng lớp Drupal\system\Plugin\Block\SystemBrandingBlock
, thay vì lớp Drupal\Core\Block\BlockBase
. Sau đó, bạn có thể thêm phương thức tùy chỉnh của mình vào khối mới được xác định.
https://www.valuebound.com/resources/blog/drupal-8-how-to-create-a-custom-block-programatally
xem xét thay thế
Nếu những gì bạn cần từ Hệ Thống Xây Dựng Thương HiệuKhối
chỉ là dữ liệuvà không nhất thiết là một khối thực tế, thay vào đó tôi khuyên bạn nên xác định một dịch vụ cung cấp dữ liệu từ bạn buildToArray()
phương pháp.
phản hồi bình luận
Đúng là điều này sẽ tạo ra một loại khối mới, ngoài Hệ Thống Xây Dựng Thương HiệuKhối
. Các khối được quản lý, sắp xếp và truy xuất bởi Chặn trình quản lý plugin. Bạn có thể viết một trình trang trí cho dịch vụ này và ghi đè lên getDefinition()
phương pháp để ngăn chặn các bản gốc Hệ Thống Xây Dựng Thương HiệuKhối
không có sẵn dưới dạng định nghĩa plugin, đạt được hiệu quả thay thế bản gốc Hệ Thống Xây Dựng Thương HiệuKhối
với khối mới của bạn.
Đối với tôi, nó vẫn giống như một dịch vụ là những gì bạn cần. Bằng cách kiểm tra mã trong bản gốc Hệ Thống Xây Dựng Thương HiệuKhối
định nghĩa lớp, chúng ta thấy rằng Hệ Thống Xây Dựng Thương HiệuKhối
chỉ dựa vào một dịch vụ, config.factory
. Vì vậy, dịch vụ của bạn chỉ cần tiêm config.factory
dịch vụ để lấy thông tin mà bạn cần cho buildToArray()
phương pháp (có thể được đổi tên tốt hơn thành một cái gì đó như getBrandingInfo()
). Xác định một dịch vụ theo cách này có nghĩa là bạn sẽ không cần phải lo lắng về việc triển khai hoặc triển khai một khối (dù sao thì đây dường như không phải là thứ bạn cần) hoặc cần phải viết một trình trang trí dịch vụ.
Cũng xin lưu ý rằng SystemBrandingBlock không phải là nguồn gốc của dữ liệu, mà là một plugin để hiển thị những dữ liệu đó ở định dạng được hiển thị. Khối hoàn toàn không liên quan nếu tất cả những gì bạn muốn là dữ liệu.
Cuối cùng, nói một cách rộng hơn, Drupal được tổ chức chủ yếu xoay quanh các plugin, dịch vụ và nội xạ phụ thuộc và việc làm quen với các khái niệm này sẽ cung cấp cho bạn các công cụ để giải quyết nhiều vấn đề trong Drupal một cách có hệ thống.