it-swarm-id.com

Tambahkan JavaScript ke dalam jenis konten tertentu

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 ...

9
arkchong

Saya tidak dapat mengomentari yang tepat Drupal 7 setara, tetapi di Drupal 6 situs 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 menambahkan $vars["scripts"] dengan skrip eksternal. Saya menambahkan agar saya tidak mengalami masalah ketergantungan dengan skrip lokal.

Terkadang saya juga akan membuat daerah baru bernama $global_scripts untuk berpikir seperti Google API dan SWFObject yang ingin saya muat dari CDN, dan ini dicetak sebelum $scripts dalam templat halaman.

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

6
mpdonadio

Sejak 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_node daripada preprocess_page karena lebih mudah untuk mendapatkan ke tipe simpul. Jika Anda benar-benar mereferensikan file javascript, maka itu akan di-cache secara otomatis ( lihat bagian Parameter ).

6
Jukebox

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

OR

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

2
Jeremy French

Solusi sederhana adalah dengan hanya menempatkan add_js:

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

di halaman/node template.php.

0
Nevos