Tôi đang sử dụng khối chế độ xem trong trang web của mình, nội dung của chế độ xem này được lọc theo chương trình. Bây giờ tôi nhận được tin nhắn từ những người dùng nhìn thấy thông tin sai. Bộ lọc dựa trên người dùng hiện đang đăng nhập. Vì tôi cần thông tin này trong bộ lọc thông thường chứ không phải trong bộ lọc theo ngữ cảnh nên tôi đã tạo một mô-đun đơn giản để thay đổi giá trị bộ lọc.
Bộ lọc của tôi là như thế này:
(
Loại nội dung = contenttype_a
VÀ
uid(nodes author) = */giá trị này được thêm vào theo chương trình*/
)
HOẶC
(
Loại nội dung = contenttype_b
VÀ
user_target_id(reference) = */giá trị này được thêm vào theo chương trình*/
)
Hơn tôi sử dụng cái này trong mô-đun của mình:
*/
chức năng entity_access_views_pre_view(ViewExecutable $view, $display_id, array &$args){
$currentUser = \Drupal::currentUser();
$cuid = $currentUser->id();
/* @ Chế độ xem bộ lọc: Phương tiện */
if ($view->id() == 'my_view_id') {
if ($display_id == 'block_1' || $display_id == 'page_1' || $display_id == 'page_2') {
$filters = $view->display_handler->getOption('filters');
$filters['uid']['value']['value'] = $cuid;
$filters['user_target_id']['value']['value'] = $cuid;
$view->display_handler->overrideOption('filters', $filters);
}
}
}
Vì dường như tôi không thể tìm ra vấn đề nên tôi nghi ngờ liệu ở trên có hoạt động như tôi muốn không. Vì vậy, tôi muốn kiểm tra xem bạn có thấy điều gì lạ hoặc sai không. Giá trị bộ lọc này có thể được lưu trữ theo một cách nào đó không? Hoặc có thể có một cách tốt hơn để làm điều này.
Tôi không thể sử dụng bộ lọc theo ngữ cảnh mà tôi thích hơn vì chế độ xem đang hiển thị hai loại nội dung trong đó trên mỗi loại nội dung, bộ lọc phải khác nhau.
Cảm ơn trước.