Bagaimana cara menambahkan blok JavaScript ke beranda saja?

8

Saya memiliki blok JavaScript yang perlu saya tambahkan ke beranda (dan hanya beranda) untuk mengaktifkan pencatatan klik melalui layanan pemetaan panas yang saya daftarkan.

Mereka menentukan kode yang perlu ditempatkan tepat sebelum </body>tag, tapi saya kira aman untuk meletakkannya di mana saja di dalam <body>tag.

Saya ingin cuplikan tidak muncul di halaman lain. Bagaimana saya bisa mencapai ini?

Saya menjalankan Drupal 6.

PHLAK
sumber

Jawaban:

15

Jika menurut halaman beranda maksud Anda adalah halaman depan, maka Anda dapat menerapkannya hook_preprocess_page()dalam modul khusus.

function mymodule_preprocess_page(&$variables) {
  if ($variables['is_front']) {
    drupal_add_js(drupal_get_path('module', 'mymodule') . '/mymodule.js');
    $variables['scripts'] = drupal_get_js();
  }
}

Kode yang sama berfungsi pada Drupal 7, seperti $variables['is_front']yang diatur dalam _template_preprocess_default_variables () (dipanggil dari template_preprocess () ), menggunakan kode berikut.

  // drupal_is_front_page() might throw an exception.
  try {
    $variables['is_front'] = drupal_is_front_page();
  }
  catch (Exception $e) {
    // If the database is not yet available, set default values for these
    // variables.
    $variables['is_front'] = FALSE;
    $variables['db_is_active'] = FALSE;
  }

Alasan pemanggilan drupal_add_js()pertama, dan kemudian drupal_get_js()adalah, dalam kasus modul lain yang dieksekusi setelah menjalankan kode berikut, file JavaScript masih akan ditambahkan.

function quite_a_different_module_preprocess_page(&$vars) {
  drupal_add_js(drupal_get_path('module', 'quite_a_different_mymodule') . '/quite_a_different_module.js');
  $vars['scripts'] = drupal_get_js();
}

Menggunakan drupal_add_js(), file akan ditambahkan ke output yang dikembalikan dari drupal_get_js () .

kiamlaluno
sumber
Ini terlihat bagus, akan mencobanya.
PHLAK
Ini berfungsi dengan baik untuk menyertakan JS di header, tetapi apakah ada cara untuk memasukkannya ke dalam tubuh?
PHLAK
1
@ PHLAK Untuk meletakkannya di badan, Anda cukup menambahkan <script>tag di badan HTML.
kiamlaluno
Saya dapat mencapai apa yang saya butuhkan dengan menambahkan blok konten di akhir halaman dan membatasi hanya ditampilkan di <front>halaman. Solusi ini juga bagus, tetapi tidak untuk situasi yang saya alami. Terima kasih.
PHLAK
6

Jika kode bisa masuk di bagian kepala, lalu tambahkan fungsi berikut di template.php Anda.

function MYTHEME_preprocess_page (&$vars) {
  if ($vars['is_front']) {
    $vars['scripts'] .= "// my JS for the home page";
  }
}

Anda juga dapat menambahkan kode berikut, di tempat yang sesuai dengan halaman Anda.tpl.php.

<?php if ($is_front): ?>
  // JS goes here
<?php endif; ?>

Ada cara lain untuk mencapai ini, tetapi ini mungkin yang paling mudah.

mpdonadio
sumber
-3

Di Drupal 7 jika Anda ingin memasukkan js dalam tag dengan

solusi terakhir, file yang harus Anda modifikasi, setelah Anda menyalinnya di dalam tema Anda dari folder sistem, adalah html.tpl.php .

Bukan cara Drupal tetapi bekerja

saropatzi
sumber