Di / admin / orang, saya ingin menyembunyikan nama tampilan (yaitu nama Tampilan tidak boleh muncul dalam daftar pengguna), tetapi hanya untuk peran tertentu.
Dalam file .module saya, saya telah mencoba kait berikut:
function hook_views_data_alter(array &$data) {
kint($data['users']);die;
}
function hook_views_pre_render(\Drupal\views\ViewExecutable $view) {
if($view->id() == 'myview'){
print_r($view->result);die;
// kint($value->_entity->get('title')->value);
}
}
function hook_views_post_render(\Drupal\views\ViewExecutable $view) {
if ($view->id() == 'viewid') {
// Set the view title.
$field_name = $view->getFields();
}
}
function hook_field_views_data_views_data_alter(array &$data, \Drupal\field\FieldStorageConfigInterface $field) {
$field_name = $field->getName();
echo 'hjsjhwd';
print_r($field_name);die;
}
Tak satu pun dari mereka yang membantu saya. Saya berpikir untuk mendapatkan bidang tampilan "pengguna" dan setelah itu saya akan menghapusnya untuk peran tertentu. Namun dalam daftar tampilan, bidang Nama masih muncul. Bagaimana saya bisa menyembunyikannya untuk peran tertentu?
Apakah ada cara untuk mencapai hal ini?
display name
di / admin / halaman, saya ingin menyembunyikan kolom tertentu itu sebenarnya. Mungkin Jika saya menyembunyikan bidang, kolom itu juga disembunyikan untuk peran khusus saya.Jawaban:
Cara yang paling efisien adalah menggunakan hook_views_pre_view (), yang memungkinkan Anda untuk mengubah tampilan di awal proses, yaitu sebelum permintaan dibangun / dijalankan dan sebelum proses rendering berlangsung. Anda dapat menghapus field handler 'name' dari View berdasarkan pada logika yang diinginkan.
Solusi ini mengasumsikan bahwa Anda hanya tertarik untuk melayani kasus penggunaan yang sangat spesifik ini - hapus bidang hanya dari Tampilan spesifik ini. Pengguna mungkin masih dapat melihat Nama Tampilan pengguna di area lain situs web.
sumber
$views->id() ===
?$views->id()
? Haruskah begitu$view->id()
?if (empty(array_intersect($userRoles, $userRolesAllowed)))
. Info lebih lanjut tentangarray_intersect
Anda dapat menyembunyikan bidang menggunakan hook_entity_field_access , Anda dapat menyembunyikan bidang berdasarkan akun pengguna (peran adalah salah satu propertinya), operasi dan entitas yang berisi bidang tersebut.
Anda juga dapat menggunakan modul Izin Bidang untuk menyembunyikan bidang dari peran tertentu.
sumber
Ketika Anda perlu menghapus header tabel <td> dan juga baris <td> Anda dapat menggunakan template_preprocess_views_view_table
Catatan: Untuk kebutuhan apa pun seperti ini, cobalah untuk tidak menggunakan lebih dari dua kait untuk memenuhi kebutuhan Anda. Karena Drupal selalu akan melakukan apa pun yang Anda inginkan menggunakan satu atau dua kait tidak lagi.
Pembaruan: Untuk Drupal 7 juga menggunakan nama kait yang sama pada URL ini template_preprocess_views_view_table
sumber
Gunakan modul Izin Bidang Tampilan . Tidak diperlukan kode khusus!
Dukungan untuk peran ditambahkan sekitar sebulan yang lalu.
sumber