Mô tả:
User A chỉ được quyền view các node: 12, 15, 17 thuộc content type RS từ ngày 1 -> 5. Trong thời gian này, khi user A search, vào page node, hay vào bất cứ page nào liệt kê danh sách node, thì đối với content type RS hệ thống chỉ hiển thị đúng 3 node: 12, 15, 17. Quá thời gian quy định, user A sẽ mất quyền view các node này.
Hướng giải quyết dự kiến:
Hiện tại mình tìm được 1 cách là dùng 2 hàm hook_node_grants và hook_node_access_records để ghi vào table node_access, danh sách các node user A được phép view trong thời gian từ ngày 1 -> 5. Nếu hết thời gian này, quyền view được set = 0 (ko được view).
=> phải lưu: (N user) x (N node-id của content type RS), luôn check ngày hết hạn để set lại quyền view, lưu quá nhiều dòng dữ liệu => :(
Hỏi:
Các bạn có cách nào giải quyết y/c trên tốt hơn không? Kiểm tra quyền view 1 node động (tức không cần lưu vào database) tương tự hàm hook_node_access của drupal 7?
Giúp mình với!
Thank for advance!

Comments
Node 12, node type RS, được
Node 12, node type RS, được xem từ ngày 1 tới ngày 5 - Cái này động hay là cứng đó bác?
hook_node_access tốt hay
hook_node_access tốt hay không còn tuỳ số lượng role và node trên website. Khoảng chừng 10K node là có triệu chứng ì ạch. Không phải lo lưu hay sửa đổi nhiều dữ liệu, mà là do phải JOIN với 1 bảng có quá nhiều dòng.
Cách thì có, nhưng như thehong nói, tuỳ vào những thông tin kia ra sao, quản lí (trong 1 table riêng) dễ dàng không, và bạn có "làm chủ" được danh sách các trang liệt kê node không. Nếu không làm chủ được, thì phải dùng node_access thôi. Ngoài ra, bạn cũng cần xem lại, liệu việc loại trừ node đó ra khỏi mọi view liệu có cần thiết không (ở đây có sự thoả hiệp giữa tính năng và hiệu năng).
Tất cả thông tin mình đều làm chủ được
Các node 12, 15, 17 và thời gian view node đều tùy thuộc vào từng user. Ví dụ:
- User A: có thể view các node 12, 15, 17 từ ngày 1-> 5.
- User A: có thể view các node 19, 25, 45 từ ngày 1-> 5.
- User B: có thể view các node 12, 15, 17 từ ngày 1 -> 5
- User C: có thể view các node 13, 16, 105, từ ngày 2-> 10.
Tất cả thông tin này, mình đều làm chủ được, đều được lưu trữ ở 1 table riêng.
Đúng như anh jcisio nói, nó sẽ bị ì ạch khi JOIN quá nhiều dòng.
Cảm ơn thehong và jcisio!
--
Mỹ VÕ
Thế nên tuỳ vào lượng dữ liệu
Thế nên tuỳ vào lượng dữ liệu thôi. Lúc đầu mình cũng dùng node_access (trong module Workflow access), giờ bỏ rồi, vì mình quản lí được, và giới hạn được những trang nào hiển thị danh sách node, và có biện pháp cho từng trang. Riêng trang đơn lẻ (view/edit) thì dùng hook (hook_nodeapi hoặc hook_menu_alter để kiểm tra quyền thêm).
Cái này giống một hệ thống bán/đăng kí nội dung nhỉ ;-) Tập trung giải quyết cái JOIN thôi, còn việc cập nhật cái bảng đó không phải vấn đề lớn, dù làm 5 phút/lần.
hook_node_access của D7 cũng đâu giải quyết được cái này. Nó chỉ làm cho các module dùng hook_menu_alter để kiểm soát node dễ thở và tránh đá nhau thôi.
Hihi... đoán 1 phát đúng "phóc"
Hihi... đoán 1 phát đúng "phóc", đúng là hệ thống bán nội dung :)
Hook_menu_alter tuyệt cú mèo, có 1 anh cũng chỉ mình dùng thằng này. Haha.. tuyệt!
Giờ đi xử cái JOIN thôi ^^
Thanks anh jcisio,
--
Mỹ VÕ
module send sms vinaphone,mobifone,viettel
module send sms vinaphone,mobifone,viettel
http://share.gia24.com/index.php?file=ed090f2b9238c437a7d4d72d1217c47a
http://link.gia24.com
http://www.gia24.com