ページにJavaScriptを追加できません


7

これを使っていますが、なぜ動かないのかわかりません。

if ($_SERVER['REQUEST_URI'] == '/node/1') { 
  drupal_add_js(drupal_get_path('theme', 'sanskrit').'/sites/all/themes/sanskrit/scripts/jquery-1.4.3.min.js', 'inline'); 
  drupal_add_js('/sites/all/themes/sanskrit/scripts/scripts/jquery.nivo.slider.pack.js');   
} 

私がやりたいのは、ユーザーがフロントページを表示しているときに特定のJavaScriptファイルを追加することです。

回答:


17

これはそれを行うはずです:

function MYTHEME_preprocess_page(&$vars) {
  if (drupal_is_front_page()) {
    drupal_add_js(drupal_get_path('theme', 'MYTHEME') . '/MYSCRIPTS/myscript.js');
    $vars['scripts'] = drupal_get_js();
  }
}

参考までにdrupal_get_js、モジュールがhook_preprocess_page新しいスクリプト自体も使用および設定している場合に使用します。

また、jQueryの新しいバージョンをwilly nillyに追加するだけではありません。jQuery UpdateまたはjQuery Multiを試してください


この行の関数でエラーが発生しましたMYTHEME_preprocess_page(&$ vars){どうすればよいですか
Jaiffable

Undefined functionエラーが発生していますか?drupal_is_front_page()下の私の答えのようになると思います。
ninjascorner

おっと...私は私の答えを編集しました。それは私がいつも間違ってタイプするそれらの機能の一つです。指摘してくれてありがとう!
Chapabu

4

あるいは、JavaScriptライブラリモジュール。スクリプトをフロントページに制限することはできませんが、スクリプトをロードするだけのモジュールを作成するよりもはるかに簡単です。


3

モジュールを使用している場合は、次のようにそれをhook_initに配置します。

function mymodule_init() {
  if(drupal_is_front_page()) {
    drupal_add_js(drupal_get_path('theme', 'sanskrit') . '/sites/all/themes/sanskrit/scripts/jquery-1.4.3.min.js'); 
    drupal_add_js(drupal_get_path('theme', 'sanskrit') . '/sites/all/themes/sanskrit/scripts/scripts/jquery.nivo.slider.pack.js');
  }
}

preprocess_pageに入れたい場合:

function yourTheme_preprocess_page(&$vars) {
  if(drupal_is_front_page()) {
     drupal_add_js(drupal_get_path('theme', 'sanskrit') . '/sites/all/themes/sanskrit/scripts/jquery-1.4.3.min.js'); 
     drupal_add_js(drupal_get_path('theme', 'sanskrit') . '/sites/all/themes/sanskrit/scripts/scripts/jquery.nivo.slider.pack.js');
     $vars['scripts'] = drupal_get_js();
  }
}

または、独自のテーマを作成する場合は、theme.infoファイルに追加できます。

scripts[] = scripts/jquery.nivo.slider.pack.js

2

JavaScriptをフロントページに追加するための最善かつ最も簡単な方法は、コンテキストコンテキスト追加アセットを使用することです。コンテキストとコンテキスト追加アセットもエクスポート可能で、後で使用する機能を作成できます。

コンテキスト追加アセットの詳細:

このモジュールは、コンテキスト内に反応を追加して、テーマ、モジュール、またはカスタムフォルダーファイルをページに追加します。

テーマにcssファイルをすばやく追加したいと思ったことはありませんか?jsファイルを1つのページ(またはセクション)のみに含めます。

このモジュールで複数のCSSファイルを簡単に使用し、テーマのコンテキストの力を利用してください!


1

あなたがから返された文字列を連結しているので、それが機能していないdrupal_get_path('theme', 'sanskrit')とします'/sites/all/themes/sanskrit/scripts/jquery-1.4.3.min.js'。Drupalをサーバーのルートディレクトリのサブディレクトリにインストールしなかったとすると、渡すファイル名drupal_add_js()は、sites / all / themes / sanskrit / bbbsites / all / themes / sanskrit / scripts / jquery-1.4.3です。 min.js。

使用するコードは次のとおりです。

if ($_SERVER['REQUEST_URI'] == '/node/1') {
  $theme_path = drupal_get_path('theme', 'sanskrit'); 
  drupal_add_js($theme_path . '/scripts/jquery-1.4.3.min.js', 'inline'); 
  drupal_add_js($theme_path . '/scripts/jquery.nivo.slider.pack.js');   
} 

他の人が指摘したように、ユーザーがフロントページを表示しているかどうかを確認するには、drupal_is_front_page()を呼び出すだけです。

テーマはにインストールsites/<domain.name>/themes/<theme.name>でき、モジュールはにインストールできるため、sites / all / themesのようなパスは、テーマ/モジュールコードにハードコードしないでくださいsites/<domain.name>/modules/<module.name>。ドメインblog.example.comにDrupalインストールが使用され、Viewsモジュールがsites / blog.example.com / modules / viewsにインストールされ、Whitebullテーマのようなテーマがsites / blogにインストールされると仮定します。 example.com/themes/whitebull。

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