回答:
ホームページがフロントページを意味する場合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()から返された出力に追加されます。
<script>
は、HTML本文にタグを追加するだけです。
<front>
。このソリューションも良いですが、私がいた状況ではありません。ありがとうございます。
コードがヘッドセクションに配置できる場合は、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; ?>
これを実現する方法は他にもありますが、おそらくこれが最も簡単です。