ฉันมีปัญหากับเอนทิตีparagraphs_type เมื่อฉันเพิ่มparagraphs_typeในโหนดที่มีรายการย่อหน้าอยู่ข้างใน และฉันตั้งค่าเป็นสถานะยกเลิกการเผยแพร่ ผู้ใช้ที่ไม่ระบุชื่อจะยังเห็นได้
ฉันพยายามปรับแต่งการเข้าถึงด้วยวิธีอื่น:
/**
* ใช้ hook_ENTITY_TYPE_access()
* ENTITY_TYPE : ย่อหน้า_ประเภท
*/
ฟังก์ชัน my_module_paragraphs_type_access(
Drupal\Core\Entity\EntityInterface $entity,
$ การดำเนินการ,
\Drupal\Core\Session\AccountInterface $บัญชี
) {
echo '<ก่อน>';
var_dump('my_module_paragraphs_type_access');
var_dump(การดำเนินการ $);
var_dump(บัญชี$);
ทางออก ();
// ซ่อนย่อหน้าสำหรับผู้ใช้ที่ไม่ระบุชื่อหากไม่ได้เผยแพร่
ถ้า ($operation == 'ดู'
&& !$entity->isPublished()
&& ($account->isAnonymous() ||
!$account->hasPermission('ดูย่อหน้าที่ไม่ได้เผยแพร่'))
) {
กลับ \Drupal\Core\Access\AccessResult::forbidden();
}
กลับ \Drupal\Core\Access\AccessResult::allowed();
}
มันไม่เวิร์ค var_dump('my_module_paragraphs_type_access');
มันไม่เคยดำเนินการ
หรือคลาสแบบกำหนดเองที่ขยาย ParagraphsTypeAccessControlHandler :
<?php
ใช้ Drupal\Core\Access\AccessResult;
ใช้ Drupal\Core\Entity\EntityInterface;
ใช้ Drupal\Core\Session\AccountInterface;
ใช้ Drupal\paragraphs\ParagraphsTypeAccessControlHandler;
/*
* เพิ่มการเข้าถึง paragraphs_type ที่กำหนดเอง
*/
คลาส CustomParagraphsTypeAccessControlHandler ขยาย ParagraphsTypeAccessControlHandler {
/**
* {@inheritdoc}
*/
ฟังก์ชันที่มีการป้องกัน checkAccess (EntityInterface $entity, $operation, AccountInterface $account) {
สวิตช์ (การดำเนินการ $) {
กรณี 'ดูย่อหน้าที่ไม่ได้เผยแพร่':
ถ้า($account->isAnonymous())
กลับ AccessResult::forbidden();
หยุดพัก;
กรณี 'ดูฉลาก':
ส่งคืน AccessResult::allowedIfHasPermission($account, 'เข้าถึงเนื้อหา');
ค่าเริ่มต้น:
ส่งคืน parent::checkAccess($entity, $operation, $account);
}
}
}
แต่ก็ยังเหมือนเดิม...
แผนอื่นที่จะซ่อนพวกเขาไปยังผู้ใช้ที่ไม่ระบุตัวตน ?
ฉันพบปัญหานี้:https://www.drupal.org/project/paragraphs/issues/3095959#comment-13363535