web-dev-qa-db-fra.com

Comment ajouter du javascript à un nœud ou un bloc

J'ai créé un script de calcul des coûts et je souhaite l'utiliser sur mon site Drupal 7.

J'ai entendu parler de drupal_add_js, mais je ne sais pas dans quel contexte.

2
user16277

Utilisez une fonction dans le fichier template.php: yoursite.com/sites/all/themes/YOUR_THEME/template.php

Ajoutez un fichier JS dans un bloc:

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

Ajouter un fichier JS à un page ou nœud:

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

Ajoutez un fichier JS à un type de contenu:

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

Ajoutez un fichier JS à une vue:

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');
  }
}

Comme mentionné par @Pierpaolo Cira, vous pouvez toujours remplacer MY_THEME Par MY_MOUDLE. Pour obtenir le chemin d'accès à votre module, vous devez utiliser drupal_get_path('module', 'my_module').

Remarque : MY_THEME Et MY_MODULE Doivent être minuscules si le nom de votre module ou thème est en minuscule. (Par exemple, MY_THEME Serait remplacé par zen si zen)

Source

6
Chris Happy

Vous pouvez ajouter le js à l'intérieur d'un module:

Créez le module et placez-le dans le mymodule.module

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

ou dans le thème:

dans le fichier .info

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

scripts[] = mytheme.js

ou dans une fonction 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

Utilisez la fonction dans template.php

Ajouter un fichier JS en bloc:

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

Ajouter un fichier JS dans la page ou le nœud:

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

}
2
Amitdrupal

Une meilleure approche serait d'obtenir le chemin depuis Drupal, et vous devez mettre le code dans la fonction de formulaire;

function mymodule_form($form, &$form_state) {

... some of your forms goes here

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

  return $form;

Ajoutez également votre javascript entre le code ci-dessous

(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