私はdrupal_add_css()
とdrupal_add_js()
を使用して、CSSファイルとJavaScriptファイルをDrupalサイトに追加しています。私はコントロールと呼ばれるモジュールでこれをやっているので、私が使っている関数はcontrol_preprocess_page(&$vars)
と呼ばれています。drupal_add_css、drupal_add_jsが機能しません
しかし、私のテーマでは何も追加されていません!
私はdrupal_add_css()
とdrupal_add_js()
を使用して、CSSファイルとJavaScriptファイルをDrupalサイトに追加しています。私はコントロールと呼ばれるモジュールでこれをやっているので、私が使っている関数はcontrol_preprocess_page(&$vars)
と呼ばれています。drupal_add_css、drupal_add_jsが機能しません
しかし、私のテーマでは何も追加されていません!
preprocess_page()関数内でこれらの関数が機能しない理由は、template_preprocess_page()(最初に呼び出される)が構造化コンテンツを変数$ scriptsおよび$ stylesにフォーマット済みであることです。あなたは前処理レベルで追加のJSやCSSを追加したい場合は、それらの2つの変数を再生成するために、このような何かが必要です(hook_initにdrupal_add_js/drupal_add_cssを使用して、より正確に標的に機能
function control_preprocess_page(&$vars) {
// Add new CSS.
drupal_add_css('path/to/css/foo.css');
// Rebuild the 'styles variable.
$vars['styles'] = drupal_get_css();
// Add new JS.
drupal_add_js(...);
$vars['scripts'] = drupal_get_js();
}
を例えば、 alterフック、またはnodeapiフック)は、それらの変数を再生成する必要はありません。
あなたのCSS/JSが必要な時点で、drupal_add_css/jsで呼び出すことができます。モジュールがすべてのページで使用されている場合は、hook_init()で使用することもできます。
+1:initフックは、JS/CSSをグローバルにインクルードするのに便利です。ノードの読み込み(hook_nodeapiで)、コメントの変更、フォームの変更なども含めることができます。 –
役立つかもしれないいくつかのポインタ:
1)あなたのテーマフォルダにあなたのCSS/JSスクリプトを置きます。
4:
は<?php drupal_add_js(drupal_get_path('theme', 'INSERT_NAME_OF_THEME') . '/INSERT_NAME_OF_CSS_FILE.css'); ?>
3)あなたは、サブフォルダにCSSを配置する場合、次のコードが必要になります:あなたのnode.tpl.phpファイルで 2)は、以下を使用します)yousite.com/admin/settings/performanceでキャッシュをリフレッシュしてください
5)私は時々admin/build/themesでテーマを無効にして再度有効にしなければならないことがわかります。
これは可能ですが、それはベストプラクティスではありません。 –
サンプルコードを追加できますか? –