Sebenarnya saya ingin membuat daftar komentar untuk node sendiri (oleh Views, misalnya), jadi saya perlu menyembunyikan daftar komentar standar dari modul komentar inti. Saya bisa melakukannya seperti itu:
unset($node['comments']['comments']);
Tetapi itu tidak akan mencegah permintaan DB untuk komentar.
Jadi saya menemukan beberapa cara gila untuk mengelabui modul komentar. Misalnya, untuk menetapkan $node->preview
properti palsu , atau untuk membuat mode tampilan baru dan menimpa node/%node
panggilan balik standar .
Apakah benar-benar sangat sulit untuk menyembunyikan komentar di bawah simpul tetapi masih memungkinkan untuk menambahkan komentar baru, atau saya melewatkan sesuatu?
Perbarui tentang opsi "Tersembunyi"
Bagaimana dengan nilai "Tersembunyi" untuk jenis konten:
Saya perlu perilaku dekat / terbuka untuk komentar saya. Tetapi jika saya mengatur "Tersembunyi" untuk tipe konten saya, konten baru saya disetel ke "Komentar ditutup" alih-alih disembunyikan (di sini adalah kodenya ). Masalah lain adalah bahwa pengguna dengan izin untuk "memposting komentar" tidak dapat menambahkan komentar, jika komentar disembunyikan (di sini adalah kodenya ).
Jadi saya tidak bisa mendapatkan ide.
Menjawab
Solusi ditemukan dengan hook_module_implements_alter()
. Terima kasih banyak!
Jawaban:
Dalam modules / comment / comment.module kita dapat melihat bahwa hook_node_view () (comment_node_view ()) berjalan di baris 614. Di sinilah fungsi-fungsinya diaktifkan untuk memuat semua komentar dan melampirkannya ke node. 2 set pertama if () {...} tampaknya menangani form tambah komentar dan tautan tindakan. Kemudian blok kode terakhir akhirnya menambahkan komentar, yang saya percaya adalah apa yang sebenarnya paling Anda khawatirkan untuk disembunyikan, dan saya berasumsi Anda ingin ini dilewati karena alasan kinerja:
Saya pikir kode ini konyol, karena modul komentar tidak boleh bergantung pada mode tampilan hardcoded tertentu. Semoga ini akan berubah dan menjadi pengaturan di UI.
Terlepas dari itu, saya telah menemukan posting serupa yang mungkin menarik bagi Anda: Apakah ada cara untuk menghentikan comment_node_view agar tidak diaktifkan?
Pada dasarnya Anda ingin menggunakan hook_module_implements_alter () untuk menghentikan modul komentar agar tidak dapat mengaktifkan hook_node_view (). Inilah yang perlu Anda tambahkan ke modul khusus Anda:
sumber
hook_module_implements_alter
!Coba gunakan hide () di file template Anda, atau hook_preprocess_node ():
sumber