web-dev-qa-db-ja.com

ノードまたはブロックにJavaScriptを追加する方法

コスト計算スクリプトを作成しましたが、これをDrupal 7サイトで使用します。

drupal_add_js、しかし、私はどんな文脈で知りません。

2
user16277

Template.phpファイルで関数を使用します:_yoursite.com/sites/all/themes/YOUR_THEME/template.php_

ブロックにJSファイルを追加します。

_function YOUR_THEME_preprocess_block(&$variables) {  
    drupal_add_js(drupal_get_path('theme', 'MYTHEME') .'/scripts/path');
} 
_

JSファイルをoneページまたはノードに追加します:

_function YOUR_THEME_preprocess_page(&$variables) {
  if ($variables['nid'] == 'INSERT_NODE_ID') {
     drupal_add_js(drupal_get_path('theme', 'MYTHEME') .'/scripts/path');
  }
}
_

JSファイルをコンテンツタイプに追加します。

_function YOUR_THEME_preprocess_node(&$variables) {
  if ($variables['type'] == 'INSERT_CONTENT_TYPE') {
       drupal_add_js(drupal_get_path('theme', 'MYTHEME') . '/scripts/path');
  }
}
_

JSファイルをビューに追加します。

_function YOUR_THEME_preprocess_views_view(&$variables){
  if ($variables['name'] == 'INSERT_VIEW_MACHINE_NAME') {
    // include javascript
    drupal_add_js(drupal_get_path('theme', 'MYTHEME') . '/scripts/path');
  }
}
_

@Pierpaolo Ciraで述べたように、_MY_THEME_は常に_MY_MOUDLE_で置き換えることができます。モジュールへのパスを取得するには、drupal_get_path('module', 'my_module')を使用する必要があります。

:_MY_THEME_および_MY_MODULE_は、モジュールまたはテーマ名が小文字の場合、小文字にする必要があります。 (例:_MY_THEME_は、禅の場合はzenに置き換えられます)

ソース

6
Chris Happy

Js モジュール内を追加できます:

モジュールを作成し、mymodule.module内に配置します

drupal_add_js(drupal_get_path('module', 'mymodule') . '/mymodule.js');

またはテーマ内

.infoファイル内

name = My theme
description = Theme developed by me.
core = 7.x
engine = phptemplate

scripts[] = mytheme.js

またはpreprocess_page関数内

function mytheme_preprocess_page(&$vars, $hook) {
  if (true) {
    drupal_add_js(drupal_get_path('theme', 'mytheme') . '/mytheme.js');
    $vars['scripts'] = drupal_get_js(); // necessary in D7?
  }
}
3
AlexB

Template.phpの関数を使用する

ブロックにJSファイルを追加:

function MYTHEME_preprocess_block(&$variables) {  
    drupal_add_js(drupal_get_path('theme', 'MYTHEME') .'/mytheme.js', 'file');
} 

ページまたはノードにJSファイルを追加します。

function MYTHEME_preprocess_page(&$variables) {  
     drupal_add_js(drupal_get_path('theme', 'MYTHEME') .'/mytheme.js', 'file');

}
2
Amitdrupal

より良いアプローチは、Drupalからパスを取得することであり、フォーム関数にコードを配置する必要があります。

function mymodule_form($form, &$form_state) {

... some of your forms goes here

    $form['#attached']['js'][] = drupal_get_path('module', 'mymodule') . '/myscript.js';

  return $form;

また、以下のコードの間にJavaScriptを追加してください

(function($)  {
  function mymodule_function(context)  {

  // from here

  // paste your code in here

  // till here

  }

  Drupal.behaviors.custommodule = {
    attach: function(context)  {
      mymodule_function(context);
    }
  }
})(jQuery);
2
user1973842