one method change jquery drupal drupal-6

method - one change jquery



Comportamientos Drupal (6)

  • ¿Cuáles son los comportamientos de Drupal en absoluto?
  • ¿Qué tipo de capa de servicio ofrece a los desarrolladores de módulos?
  • ¿Qué tipo de relación se asigna a jQuery.ready ?

Buscando una respuesta similar y llegó aquí, todavía sin pistas. Finalmente encontré un poco más de explicación (y ejemplos) de un artículo aquí: https://benmarshall.me/drupal-behaviors/

No soy el autor original, así que solo puedo citar algunos textos:

¿Qué son los comportamientos de Drupal?

En resumen, Drupal.behaviors es una forma más modular y mejor de implementar jQuery.ready. A diferencia de jQuery.ready, que solo se ejecuta una vez cuando el DOM está listo para la manipulación, Drupal.behaviors se puede ejecutar varias veces durante la ejecución de la página. Aún mejor, se pueden ejecutar cada vez que se insertan nuevos elementos DOM en el documento (es decir, contenido dirigido por AJAX).

Drupal.behaviors también puede anular o incluso extender un comportamiento existente. Entonces, por ejemplo, si el comportamiento de un módulo agrega un efecto de rebote en todos los enlaces, otro módulo podría reemplazar ese comportamiento con un efecto de rebote diferente.

Otra ventaja adicional de Drupal.behaviors (comenzando en Drupal 7) es la capacidad de usar drupal_add_js (PHP) o Drupal.settings.modulename (JS) y pasar configuraciones como un segundo parámetro (el primero es el contexto) para el comportamiento .


Drupal tiene un sistema de "comportamientos" para proporcionar una forma modular y mejor para adjuntar la funcionalidad de JavaScript para colocar elementos en una página. Drupal Behaviors le permite anular o ampliar el comportamiento existente. Estos comportamientos de Drupal son programas desencadenados por eventos que se adjuntan a los elementos de la página para ser modificados. Si bien los comportamientos se pueden vincular a contenidos específicos, también se adjuntan múltiples comportamientos que pueden ser difundidos varias veces para lograr una nueva versión rápida.

JavaScript al adjuntar lógica a Drupal.behaviors. Aquí hay un ejemplo tomado de esa página:

Drupal.behaviors.exampleModule = { attach: function (context, settings) { $(''.example'', context).click(function () { $(this).next(''ul'').toggle(''show''); }); } }

;


Junto con las respuestas mencionadas anteriormente sobre las cosas clave es que puede pasar datos de php a javascript, que es el siguiente

Pasar valores de PHP a Javascript con "Drupal.settings"

Puede hacer que las variables de PHP estén disponibles para Javascript en el front end con Drupal.settings usando la función drupal_add_js ()

<?php drupal_add_js(array(''myModule'' => array(''key'' => ''value'')), ''setting''); ?>

o

<?php $element[''#attached''][''js''][] = array( ''type'' => ''setting'', ''data'' => array(''myModule'' => array(''key'' => ''value'')), ); ?>

Esto estará disponible en Javascript como:

if (Drupal.settings.myModule.key === ''value'') { alert(''Got it!''); }


Los comportamientos de Drupal se utilizan si su JavaScript debe ejecutarse en la carga de la página y después de una solicitud de AJAX (algunos elementos nuevos se agregan en su documento / html).

Drupal.behaviors.yourmodulename = { attach: function (context, settings) { // Code to be run on page load, and // on ajax load added here } };

yourmodulename: este es su espacio de nombres y debe ser único. Por ejemplo, este es típicamente el nombre de su módulo, pero no es obligatorio.

contexto: Esto es realmente realmente genial, en la carga de la página el contexto contendrá todo el documento y después de una solicitud AJAX tendrá todos los elementos recién cargados. De esta manera, puede tratar el contenido que se carga a través de AJAX de forma diferente que otros.

configuración: contiene información transmitida a JavaScript a través de PHP, es similar a acceder a ella a través de Drupal.settings.


Versión larga : Drupal.behaviors no es simplemente un reemplazo de jQuery.ready ya que este último solo se ejecuta una vez (cuando DOM está listo para la manipulación): los comportamientos se pueden disparar varias veces durante la ejecución de la página y se pueden ejecutar cada vez que se insertan nuevos elementos DOM el documento.

Además, los módulos podrían anular o ampliar un comportamiento existente (por ejemplo, si un módulo tiene un comportamiento de agregar un efecto de rebote en todos los enlaces, un segundo módulo podría reemplazar el comportamiento por un efecto de rebote diferente).

Versión corta : es más modular, aunque la documentación podría mejorarse.

Además, a partir de Drupal 7, las configuraciones definidas usando drupal_add_js (PHP) o en Drupal.settings.modulename (Javascript) se pasan directamente como segundo parámetro (el primero es el contexto) del comportamiento.

Por ejemplo:

Drupal.behaviors.changeLinks = function(context, settings){ if (!settings) settings = Drupal.settings.changeLinks; $("a", context).hover(function() { $(this).css(''color'', settings.color); }); };

Y si uno de tus scripts (u otros) crea nuevos nodos, aún podría tener los comportamientos aplicados a los nuevos nodos sin tener que saber qué otros módulos tengo instalados:

var newNodes = $(''<a href="#">Hello</a> <a href="#">World</a>'').appendTo(''#someDiv''); Drupal.attachBehaviors(newNodes);


Funcionalidad duplicada

Tenga en cuenta que la arquitectura Drupal.behaviors duplica la funcionalidad que ya está en jQuery.

Además, al momento de escribir esto, no parece haber documentación o estudios de casos para los comportamientos de Drupal fuera de Drupal ; y la documentación dentro de Drupal (como se indicó anteriormente) podría beneficiarse considerablemente de las mejoras. Al momento de escribir esto, parece que la documentación detallada primaria tiene acceso restringido solo por tarifa.

Esto significa que puede notar una degradación del rendimiento, anomalías y resultados inesperados que no son consistentes con jQuery estándar que son endémicos del ecosistema Drupal.behaviors.

Funcionalidad jQuery nativa

En contraste con los comportamientos de Drupal, la funcionalidad incorporada de la API jQuery estándar está ampliamente documentada, incluidas las demostraciones en línea y los ejemplos . Además, hay numerosos ejemplos en vivo libremente disponibles en sitios como jsfiddle.

Los enlaces en la sección también ver enumeran las llamadas jQuery api relevantes para manejar nuevos elementos DOM insertados en el documento.

Ver también