Điểm:1

Làm cách nào để thay đổi mức độ hiển thị của khối Trình tạo bố cục?

lá cờ us

Có móc để thay đổi quyền truy cập khối cho các khối được đặt bằng Trình tạo bố cục không? Tôi thấy có hook_block_access; nhưng đáng tiếc là điều này không được kích hoạt khi khối được đặt bằng Trình tạo bố cục.

Ngoài ra còn có công việc đang diễn ra ở đây: https://www.drupal.org/project/drupal/issues/2916876#comment-14279293 để cho phép cài đặt khả năng hiển thị khối tiêu chuẩn được cung cấp cho các khối Trình tạo bố cục; nhưng điều này chỉ cho phép các plugin visibilify được xác định. Đây có phải là lựa chọn duy nhất của tôi, để tạo một plugin hiển thị khối tùy chỉnh và sử dụng nó với bản vá đó không?

lá cờ in
Tôi tin rằng Drupal đang dần loại bỏ các móc nối để ủng hộ các plugin và người đăng ký sự kiện (bạn có thể tìm thấy nhiều bài viết về lý do tại sao chúng tốt hơn). Tôi sẽ không ngạc nhiên nếu bản vá cuối cùng không cung cấp triển khai hook. Ngoài ra, các khối được đặt trong Bố cục khối đã sử dụng plugin Điều kiện. Không có ý nghĩa gì khi tạo ra một cơ chế hoàn toàn khác khi cơ chế đó có thể được sử dụng thay thế.
liquidcms avatar
lá cờ us
@Joseph, vậy bạn có biết sự kiện nào kiểm soát quyền truy cập vào các khối được đặt bằng trình tạo bố cục không?
lá cờ in
Bản vá bạn đề cập sử dụng [Phần bổ sung điều kiện](https://www.drupal.org/node/1961370), cùng loại được sử dụng trên các khối trong Bố cục khối. [Bạn có thể tạo các plugin Điều kiện của riêng mình](https://drupalsun.com/2021/04/29/condition-plugins-visibility-drupal-8-9) giống như các plugin tích hợp sẵn.
berliner avatar
lá cờ bd
@liquidcms Bạn có thể mô tả chi tiết hơn một chút về những gì bạn muốn đạt được không?
liquidcms avatar
lá cờ us
@Joseph, cảm ơn vì liên kết và vâng, tôi biết rằng với bản vá mà tôi đề cập (vì LB chưa sử dụng plugin Điều kiện), tôi có thể thực hiện việc này với một plugin - nhưng có vẻ như quá mức cần thiết vì điều này cung cấp giao diện người dùng không cần thiết. Một cái móc (hoặc trình xử lý sự kiện) sẽ hiệu quả hơn.
Điểm:1
lá cờ cn

Đây có phải là lựa chọn duy nhất của tôi không, để tạo plugin hiển thị khối tùy chỉnh và sử dụng nó với bản vá đó?

Không, định cấu hình khả năng hiển thị của phiên bản khối không phải là tùy chọn duy nhất. Bạn cũng có thể kiểm soát quyền truy cập ở cấp plugin. Nếu bạn thêm BlockPluginTrait::blockAccess đối với lớp plugin, bạn kiểm soát tất cả các phiên bản khối của plugin này.

Tuy nhiên, phổ biến nhất trong Trình tạo bố cục là các khối tùy chỉnh nội tuyến. Plugin cho các khối này đã thực hiện phương pháp này, kiểm tra quyền truy cập của thực thể nội dung khối bên dưới. Vì vậy, trong trường hợp này, bạn có thể sử dụng một cái móc, nhưng đối với block_content:

sử dụng Drupal\Core\Access\AccessResult;
sử dụng Drupal\Core\Entity\EntityInterface;
sử dụng Drupal\Core\Session\AccountInterface;

/**
 * Triển khai hook_ENTITY_TYPE_access().
 */
function mymodule_block_content_access(EntityInterface $entity, $operation, AccountInterface $account) {
  nếu ($hoạt động == 'xem') {
    if ($entity->id() == 123) {
      trả về AccessResult::forbidden();
    }
  }
  trả về AccessResult::neutral();
}
liquidcms avatar
lá cờ us
tôi chưa bao giờ tìm thấy điều này: "phổ biến nhất trong Trình tạo bố cục là các khối tùy chỉnh nội tuyến" trong trường hợp này. Dù sao, tôi không nghĩ là cần thiết nhưng lẽ ra tôi nên đề cập rằng đây là khối Chế độ xem. Và đối với điều đó, móc block_content_access không được sử dụng (nhưng thông tin tốt cần biết). Vẫn đang nhìn.
4uk4 avatar
lá cờ cn
Đây là một tính năng chính của giao diện người dùng Trình tạo bố cục mà bạn có thể tạo các khối không thể tái sử dụng một cách nhanh chóng. BTW, lớp bổ trợ khối Chế độ xem triển khai `blockAccess()` để kiểm tra quyền truy cập của Chế độ xem. Vì vậy, bạn có thể định cấu hình quyền truy cập ở đó hoặc thậm chí viết plugin truy cập Chế độ xem của riêng mình nếu bạn không tìm thấy các tùy chọn quyền truy cập mà mình đang tìm kiếm.
liquidcms avatar
lá cờ us
Có, tôi có thể viết một plugin không bắt buộc hơn về giao diện người dùng. Tôi nghĩ rằng tôi có thể mô tả câu hỏi không chính xác. Những gì tôi có là 2 khối (xem) hiển thị hoặc không dựa trên nội dung. Tôi đã xoay sở để hoàn thành những gì tôi đang làm với việc loại bỏ một trong các khối và kết hợp phần điều kiện trong Chế độ xem bằng cách sử dụng cành cây. Cảm ơn đã giúp đỡ. Xin lỗi tôi đã không giải thích đủ tốt.
4uk4 avatar
lá cờ cn
Không có gì sai với câu hỏi ban đầu, nếu không thì tôi đã không trả lời nó. Nhưng bạn không thể ngờ rằng nó sẽ có được điều này cụ thể. Bạn cũng có thể áp dụng câu trả lời của tôi cho nhiệm vụ cụ thể này. Nhúng hai chế độ xem vào một khối và đặt phần điều kiện vào blockAccess().

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