2011-07-04 37 views
7

Quiero agregar la característica Forrst Sap a un sitio web de Drupal 7.Cómo agregar JS a Drupal 7

En primer lugar, esto implica agregar el script jquery.sap.js al sitio que puedo hacer a través de mi archivo de temas .info. Entiendo que debo reemplazar que jQuery ahora tenga un espacio de nombres para evitar conflictos con otras bibliotecas de Javascript como Prototype. Todo su código que espera usar jQuery como $ debe estar envuelto en un contexto externo como ese.

(function ($) { 
    // All your code here 
}(jQuery)); 

Pero estoy seguro de cómo especificar los comportamientos de Drupal de este código?

En segundo lugar, hay que añadir el código en línea:

$('#item').sap({ 
    distanceFromTheTop: 0 
}); 

Creo que puedo hacer esto con drupal_add_js pero de nuevo no estoy seguro de cómo hacer esto a través del archivo de template.php?

Gracias por su ayuda!

Respuesta

9

Aquí hay un pequeño código repetitivo para agregar un archivo javascript a Drupal.

(function ($) { 
    Drupal.behaviors.[myName] = { 
    attach: function(context, settings) { 

     //Begin my code 
     var myVarOne, 
      myVarTwo; 

     $('#item').sap({ 
     distanceFromTheTop: 0 
     }); 
    //I'm done with my code 

    } 
    }; 
})(jQuery); 

drupal_add_js() es una gran función para utilizar en código para agregar archivos js porque serán agregados contextualmente por lo que algunas páginas pueden tener enormes guiones js pero no van a ser cargado en el archivo js agregada en caché en otra página cargas.

Si necesita el script en everypage o si es pequeño, entonces agregarlo a través del archivo [template_name] .info utilizando scripts[] = myscript.js o si su carpeta de la plantilla tiene una subcarpeta para scripts llamados js a continuación, utilizar scripts[] = js/myscript.js

P. S. Echar un vistazo a drupal.stackexchange.com

+1

En Drupal 7, normalmente ya no es necesario usar drupal_add_ {js, css}(). Utilice # adjunto en su lugar (funciona con formularios y matrices de renderizado de páginas). – tamasd

+0

+1 para la respuesta y el comentario con la mención '# attached', pero todavía me falta una buena documentación para el uso de [' # attached'] (http://api.drupal.org/api/drupal/ desarrollador% 21topics% 21forms_api_reference.html/7 # adjunto)! Pero aquí hay un gran tutorial para "[Gestión de JavaScript en Drupal 7] (http://drupal.org/node/756722)" de Drupal.org. – Sk8erPeter

2

que se utiliza la siguiente línea al agregar correctamente el código Javascript a mi sitio de Drupal:

drupal_add_js(drupal_get_path('module', 'my_module') .'/js/mycode.js', array('type' => 'file', 'scope' => 'footer')); 

Y la siguiente línea para pasar unas simples datos variables a lo anterior se incluye /js/mycode .js:

drupal_add_js(array('my_module' => array('key' => 'value', ''))), 'setting'); 

la variable anterior es accesible en mycode.js través de la siguiente:

Drupal.settings.my_module.key; 

PS: mientras que usted está tratando de incluir el archivo .js través template.php, utilizo con éxito el código anterior en un módulo personalizado.

No estoy seguro de si mi solución exacta podría funcionar con su estrategia.

Cuestiones relacionadas