miércoles, 12 de diciembre de 2012

Sobre Views con ajax en Drupal 7

El módulo Views es sin dudas uno de los componentes principales de Drupal. Si bien aún en la versión 7 no se incluyó en el core, nadie duda de que es casi imprescindible para incorporar funcionalidades de todos los días en nuestros sitios. Una de las múltiples funcionalidades de Views es el uso de AJAX. Esto incorpora este comportamiento en los paginados y en lo filtros dándole al resultado final un alto nivel de usabilidad. Realmente funciona a las mil maravillas.

Como siempre queremos más, muchas veces tenemos que incorporar otros comportamientos en una vista que requieren que incluyamos código java script propio. Si la vista usa AJAX esto puede ser problemático, porque al ejecutarse un paginado o un filtro se reconstruye toda la vista y con ello el DOM vuelve al estado original y nuestro JS es muy probable que no se ejecute.

Para solucionar este detalle y seguir usando AJAX en nuestras vistas la respuestas es no poner nuestro js en el típico jQuery(document).ready, en este caso usaremos Drupal.behaviors

Un ejemplo:

Drupal.behaviors.nombreunico = {
attach: function (context, settings) {
jQuery('#my_id).click(function () {
-----------------
-----------------
});
}
};


Esto garantizará que aunque se pagine o se filtre la vista la función nombreunico se ejecute.