Tambahkan JavaScript ke dalam jenis konten tertentu


9

Saya ingin tahu apa cara terbaik untuk menambahkan file JavaScript ke halaman tertentu berdasarkan jenis konten. Misalnya, saya ingin menambahkan ini:

<script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script>

Sejauh ini, apa yang saya lakukan adalah menggunakan cara ini untuk menambah tipe konten spesifik saya. Untuk tipe konten map_page, saya menambahkan dua baris kode di bawah ini di halaman - map_page.tpl.php.

drupal_add_js("http://maps.google.com/maps/api/js?sensor=false", 'external');
$scripts = drupal_get_js();

Apakah ada cara lain yang lebih baik? jika mungkin dapat memberikan beberapa contoh, saat ini tidak terlalu mengerti ...

Jawaban:


6

Saya tidak dapat mengomentari setara Drupal 7 yang tepat, tetapi di situs Drupal 6 saya melakukan ini di template_preprocess_page .

Saya akan memiliki beberapa logika untuk membuat keputusan (baik berdasarkan arg()atau page_manager_get_current_page()dari panel), dan kemudian $vars["scripts"]ditambahkan dengan skrip eksternal. Saya menambahkan agar saya tidak mengalami masalah ketergantungan dengan skrip lokal.

Saya juga kadang-kadang akan membuat wilayah baru yang disebut $global_scriptsuntuk berpikir seperti Google API dan SWFObject yang ingin saya muat dari CDN, dan ini dicetak sebelum $scriptsdi templat halaman.

Sejujurnya, meskipun saya biasanya memiliki semua JS di semua halaman sehingga file di-cache.


6

Karena Drupal tidak akan membiarkan Anda mendefinisikan ulang template_preprocess_node(karena sudah didefinisikan dalam node.module), saya menambahkan fungsi preprocessor dalam modul khusus saya:

function mymodule_preprocess_node(&$vars) {
  if ($vars['type'] == 'my-node-type') {
    drupal_add_js(drupal_get_path('module', 'mymodule') . '/myjs.js');
  }
}

Saya menggunakan preprocess_nodedaripada preprocess_pagekarena lebih mudah untuk mendapatkan ke jenis simpul. Jika Anda benar-benar mereferensikan file javascript, maka itu akan di-cache secara otomatis ( lihat bagian Parameter ).


2

Anda juga bisa menggunakan cek hook_node_view untuk jenis konten dan kemudian menambahkan js dengan cara yang sudah Anda lakukan.

ATAU

Jika Anda memiliki bidang yang menampilkan informasi yang akan menggunakan JS, gunakan preprosesor di sana untuk menambahkan js, sehingga js termasuk bergantung pada bidang yang menampilkan peta daripada jenis konten.


0

Solusi sederhana adalah dengan hanya menempatkan add_js:

  drupal_add_js('drupal_get_path('module', 'mymodule') . '/myjs.js');

di halaman / node template.php.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.