Saya membuat situs dengan banyak JS, dan saya bertanya-tanya di mana saya harus meletakkan kode JS. Secara optimal saya ingin menjaga JS dengan setiap modul dan bukan lapisan tema. Beberapa konten dapat diekspos sebagai blok, dll.
Tetapi saya mengalami beberapa masalah dengan cache. Dalam contoh saya, saya perlu menambahkan JS & CSS ke formulir edit simpul. Saya telah menggunakan hook_block_view, tetapi di-cache. Jadi jika ada kesalahan dalam bentuk edit simpul, fungsi drupal_add_js & drupal_add_css tidak dipanggil. Hal yang sama tampaknya berlaku untuk hook_node_prepare.
Di mana Anda akan memasukkan lapisan JS & CSS? dan apakah ada kait yang dipanggil bahkan jika ada kesalahan dalam bentuk edit simpul?
#attached
direkomendasikan dalam hampir semua kasus. Selain itu, drupal_add_js / css akan ditinggalkan dalam Drupal 8.Anda harus menggunakan properti #attached untuk memastikan bahwa JS / CSS selalu dimuat dengan benar bersama dengan elemen render lainnya.
sumber
#attached
, dan mungkin beberapa info tambahan tentang masalah yang Anda hindari.Saya merasa jawaban & komentar ini sangat membutuhkan kode contoh, terutama yang dari @AyeshK dan @Letharion. Ini terlalu lama untuk dikomentari, jadi tolong maafkan jawabannya. Jika ini berguna bagi Anda, silakan pilih Sumeet atau Letharion. Juga, contoh berikut jelas menambahkan CSS, tetapi akan hampir identik untuk menambahkan javascript.
Menggunakan jawaban @ Sumeet, tetapi menggunakan
#attached
properti alih-alihdrupal_add_css
, terlihat seperti ini:Akhirnya, penghentian
drupal_add_css
dapat ditemukan dalam posting ini . Itu mungkin berita bagi banyak orang yang drupal_add_xxx bekerja dengan baik, seperti bagi saya.sumber
#after_build
bit adalah, untuk yang terbaik dari omong kosong pengetahuan saya, dan hanya harus dihapus. (Ada komentar serupa pada jawaban yang memberikan#after_build
solusi) Saya pikir ini dengan sendirinya menjelaskan mengapa jawaban singkat saya baik. Jika Anda sederhana melihat tautan yang saya berikan, Anda akan menemukan kode yang sama, tetapi tanpa bit yang tidak perlu.Untuk Drupal 8, saya akan menyarankan Anda untuk melihat artikel ini
sumber