it-swarm-id.com

Bagaimana cara menampilkan / menyembunyikan tautan berdasarkan izin?

Saya mencari cara untuk menyembunyikan/menampilkan tautan dari menu utama jika pengguna saat ini memiliki izin khusus. Item menu telah dibuat dan item menu terhubung ke sebuah simpul yang dikendalikan oleh hook_node_access ().

7
Camsoft

Secara default, Drupal akan menyembunyikan semua item menu yang tidak dapat diakses oleh pengguna, sehingga hal termudah untuk dilakukan, itu memerlukan akses yang dipilih untuk halaman yang menghubungkan item menu dengan item menu) untuk.

4
googletorp

Yang dapat Anda lakukan adalah mengubah panggilan balik akses yang terkait dengan "simpul /% simpul" menggunakan hook_menu_alter () , dan kemudian menulis kode untuk panggilan balik akses Anda berdasarkan pada kode node_access ( ) . Ada beberapa kasus spesifik yang masih ingin Anda tangani seperti node_access() tidak; misalnya, pengguna dengan izin "bypass node access" akan selalu mengakses node.

function mymodule_menu_alter(&$items) {
  if (isset($items['node/%node'])) {
    $items['node/%node']['access callback'] = 'mymodule_node_access';
  }
}

Pertimbangkan bahwa panggilan balik akses memutuskan siapa yang dapat melihat tautan, dan siapa yang dapat mengakses halaman ketika pengguna menulis URL secara langsung di bilah alamat browser.

2
kiamlaluno

Anda mungkin ingin mempertimbangkan drupal menu_item_visibility

Mengutip halaman proyek:

Misalnya, jika Anda ingin membuat tautan 'Akun saya' yang menunjuk ke/pengguna, pengguna anonim dan terdaftar memiliki akses ke jalur/pengguna, sehingga keduanya akan melihat tautan, meskipun pengguna anonim secara teknis tidak memiliki akun. . Dengan menggunakan modul ini, Anda hanya dapat melihat tautan 'Akun saya' terlihat oleh pengguna terdaftar, dan menyembunyikannya dari pengguna anonim.

Modul ini menggunakan UI yang sama persis digunakan untuk memblokir pengaturan visibilitas untuk keakraban.

Atau menu_views module - yang menyediakan pendekatan berbasis Views untuk pembuatan menu (yang menurut saya termasuk berdasarkan pengguna)

1
therobyouknow