JavaScriptのブロックをホームページにのみ追加するにはどうすればよいですか?


8

登録したヒートマッピングサービスを介してクリックのログを記録できるように、ホームページ(およびホームページのみ)に追加する必要があるJavaScriptのブロックがあります。

彼らは、</body>タグの直前に配置する必要があるコードを指定しましたが、<body>タグ内のどこに配置しても安全だと思います。

スニペットが他のページに表示されないようにしてください。どうすればこれを達成できますか?

Drupal 6を実行しています。

回答:


15

ホームページがフロントページを意味する場合hook_preprocess_page()は、カスタムモジュールで実装できます。

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

次のコードを使用して$variables['is_front']_template_preprocess_default_variables()template_preprocess()から呼び出されます)で設定されているのと同じコードがDrupal 7でも機能します。

  // 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;
  }

drupal_add_js()最初に呼び出し、次に呼び出した理由は、drupal_get_js()後で実行される別のモジュールが次のコードを実行する場合でも、JavaScriptファイルが追加されるためです。

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();
}

を使用するdrupal_add_js()と、ファイルはdrupal_get_js()から返された出力に追加されます。


これはよさそうだ、それを試してみます。
PHLAK、2011

これはJSをヘッダーに含めるのに適していますが、それを本文に入れる方法はありますか?
PHLAK、2011

1
@PHLAK本文に入れるに<script>は、HTML本文にタグを追加するだけです。
kiamlaluno

ページの最後にコンテンツブロックを追加し、ページにのみ表示するように制限することで、必要なことを達成できました<front>。このソリューションも良いですが、私がいた状況ではありません。ありがとうございます。
PHLAK、2011

6

コードがヘッドセクションに配置できる場合は、template.phpに次の関数を追加します。

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

次のコードを、page.tpl.phpの適切な場所に追加することもできます。

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

これを実現する方法は他にもありますが、おそらくこれが最も簡単です。


-3

Drupal 7では、jsをタグに含めたい場合は、

最後の解決策は、システムフォルダーからテーマ内にコピーした後、変更する必要があるファイルはhtml.tpl.phpです。

厳密にはDrupalの方法ではなく機能します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.