Saya menggunakan Drupal 7 dan saya membuat jenis konten baru yang disebut "eBook," dan saya membuat peran baru yang disebut "MonthlySubscriber." Tujuan saya adalah untuk mengizinkan hanya pengguna dengan "MonthlySubscriber" untuk melihat node "eBook". Ketika saya melihat pengaturan izin untuk sebuah peran, saya melihat kotak centang yang memungkinkan untuk membuat, mengedit, dan menghapus node dari jenis konten itu, tetapi tidak ada kotak centang untuk melihat node.
Bagaimana cara membatasi pengguna yang dapat melihat node "eBuku" hanya untuk pengguna dengan peran "Pembeli Bulanan"?
Berikut adalah cara sederhana melindungi halaman simpul (node / NID) dari pengguna yang tidak memiliki hak.
sumber
hook_node_access
tidak akan bekerja dengan apa pun yang "daftar" node, seperti Tampilan. Jadi, Anda dapat membatasi akses tampilanhook_node_access
, tetapi tampilan atau kueri simpul kustom masih dapat menunjukkan simpul itu kepada pengguna.hook_node_access
lebih berguna untuk kontrol editorial, untuk mengendalikan operasi create / update / deleteAkses Konten tidak berfungsi untuk pemasangan Drupal 7 saya, jadi saya menggunakan Izin Node View .
sumber
Untuk drupal 7, coba yang ini: Access by Term
sumber
Solusi hook_menu_alter yang diposting di atas oleh ya.teck tidak berfungsi, tetapi konflik dengan hook_node_access standar dalam nama fungsinya. hook_menu_alter tidak diperlukan dalam kasus ini, jadi jawaban yang diposting oleh Denis di atas menurut saya lebih akurat dan cara yang tepat. Mengubah menu_item seperti yang dilakukan adalah contoh yang direferensikan pertama dapat dihancurkan oleh modul lain lebih jauh ke bawah pipa.
sumber
Saya menggunakan potongan kode yang ditemukan dalam dokumentasi api D7 untuk hook hook_ode_access .
Kode ini akan memberikan akses untuk melihat konten "ebook" kepada pengguna yang memiliki izin "lihat ebook".
Anda memerlukan izin baru untuk mengontrol akses dengan menerapkan hook_permission ().
Dengan menerapkan hook_node_access () Drupal dapat memberikan atau menolak akses ke node.
Izin lainnya (edit, hapus, dll) dapat ditangani melalui izin Drupal normal.
Secara opsional, Anda dapat menghapus konten dari tinjauan umum admin dengan menerapkan hook_query_TAG_NAME_alter.
sumber
Saya perfer menggunakan modul Izin Node View . Lebih sederhana dari modul Akses Konten.
Seperti di D6, itu menambahkan izin "Lihat konten apa saja" dan "Lihat konten sendiri" ke semua jenis konten yang Anda pilih.
Langkah-langkah untuk diikuti:
/admin/config/content/node-view-permissions
dan pilih jenis konten yang ingin Anda batasi aksesnya.Lalu, pergi ke
/admin/people/permissions#module-node_view_permissions
dan pilih peran yang Anda inginkan untuk dapat melihat konten. Simpan izin.Selesai!
sumber