2010-12-13 18 views
2

私はdrupal_add_css()drupal_add_js()を使用して、CSSファイルとJavaScriptファイルをDrupalサイトに追加しています。私はコントロールと呼ばれるモジュールでこれをやっているので、私が使っている関数はcontrol_preprocess_page(&$vars)と呼ばれています。drupal_add_css、drupal_add_jsが機能しません

しかし、私のテーマでは何も追加されていません!

+0

サンプルコードを追加できますか? –

答えて

5

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フック)は、それらの変数を再生成する必要はありません。

4

あなたのCSS/JSが必要な時点で、drupal_add_css/jsで呼び出すことができます。モジュールがすべてのページで使用されている場合は、hook_init()で使用することもできます。

+1

+1:initフックは、JS/CSSをグローバルにインクルードするのに便利です。ノードの読み込み(hook_nodeapiで)、コメントの変更、フォームの変更なども含めることができます。 –

0

役立つかもしれないいくつかのポインタ:

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でテーマを無効にして再度有効にしなければならないことがわかります。

+1

これは可能ですが、それはベストプラクティスではありません。 –

関連する問題