miércoles, 26 de febrero de 2014

Drupal JS


En este post no voy a comentar como incluir un js en un theme de Drupal ni en un módulo. Tampoco como usar jquery. Solo voy hablar de algunos detalles del js en Drupal 7, que son muy útiles. Aunque no es nuevo, si han cambiado algunas cosas en misc/drupal.js.

Algunos elementos importantes:

Drupal.behaviors (Cuando se añade HTML vía Ajax se ejecutan los behaviors)

Un ejemplo muy común: digamos que añadimos una clase a una tabla de una vista y esa clase se añade desde un fichero js. Si esa vista tiene un paginado Ajax, por poner un ejemplo, al cambiar de página se perdería la clase que se añadió a la tabla y con ella sus estilos. Para no perderla y garantizar que se ejecute ese código js debemos usar Drupal.behaviors.

Incorrecto (se perdería la clase adicionada al ejecutar una funcionalidad Ajax en la página de la vista)

$(function () {
jQuery(".view-clientes table tr").removeClass();
jQuery(".view-clientes table").addClass('table table-hover');  
});

Correcto

Drupal.behaviors.tablestyle = {
 attach: function (context, settings) {
jQuery(".view-clientes table tr").removeClass();
jQuery(".view-clientes table").addClass('table table-hover');  
}};

Drupal.settings (Cuando se desea pasar datos de php al js)

Ejemplo:

En el .module mymodule: drupal_add_js(array('mymodule' =>' valor'), 'setting');

En el js: alert(Drupal.settings.mymodule);

Drupal.t (Igual a la función t, pero ahora desde el js)

Drupal.t(‘here the code’);

Se puede usar igual que en el php @, !, %

No hay comentarios: