Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Drupal »

[SOLUCIONADO] Usar jquery desde Drupal.

Estas en el tema de Usar jquery desde Drupal. en el foro de Drupal en Foros del Web. Buenos días amigos. Por este medio quiero saber si existe una mejor manera de usar Jquery desde un modulo personalizado. Cree un modulo llamado exportar ...
  #1 (permalink)  
Antiguo 27/01/2017, 06:41
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 15 años, 7 meses
Puntos: 22
Usar jquery desde Drupal.

Buenos días amigos.

Por este medio quiero saber si existe una mejor manera de usar Jquery desde un modulo personalizado.

Cree un modulo llamado exportar jcarousel, el cual para funcionar necesita de este modulo.

Este módulo que diseñé consta de 3 archivos:

1) exportar_carousel.info
Código PHP:
Ver original
  1. name = Exportar_Carousel
  2. description = modulo para exportar el html del carousel
  3. core = 7.x
  4. version = "7.x-1.0-dev"
  5. package = Jhonatan
  6.  
  7. dependencies[] = jcarousel


2) obtener_escript.js
Código Javascript:
Ver original
  1. jQuery(document).ready(function () {
  2.  //Cambiamos el color del btn limpiar
  3.  jQuery("#edit-limpiar").removeClass( "btn btn-default" ).addClass( "btn btn-info" );
  4.  
  5.  
  6.  jQuery("#edit-buscar").attr("type", "button");
  7.  jQuery("#edit-limpiar").attr("type", "button");
  8.  
  9. function obtener() {
  10.           /*Ocultamos los contextual_link*/
  11.           //jQuery(".contextual-links-wrapper").hide();
  12.          
  13.           /*Obtenemos el html del carousel y la pasamos a una variable Javascript*/
  14.           var Resultado_HTML= jQuery("#block-views-carousel-block").html();
  15.          
  16.           /*obreescribimos el textarea con el resultado de la variablet*/
  17.           jQuery("#edit-resultado").text(Resultado_HTML);
  18.        
  19.           /*Seleccionamos todo el texto que está en el textarea.*/
  20.           jQuery("#edit-resultado").select();
  21.          
  22.           /*Mostramos los contextual_link*/
  23.          // jQuery(".contextual-links-wrapper").show();
  24.  
  25. }
  26.  
  27. function limpiar() {
  28.   jQuery("#edit-resultado").text("");
  29.  
  30.  
  31. }
  32.  
  33.  
  34. //cambiamos la opcion de click del boton buscar  
  35.       jQuery("#edit-buscar").click(function() {
  36.           obtener();
  37.       });
  38.  
  39.  
  40. jQuery("#edit-limpiar").click(function() {
  41.       limpiar();
  42. });
  43.  
  44.  
  45. });
  #2 (permalink)  
Antiguo 27/01/2017, 06:42
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 15 años, 7 meses
Puntos: 22
Respuesta: Usar jquery desde Drupal.

y por último el archivo 3) exportar_carousel.module

Código PHP:
Ver original
  1. <?php
  2.  
  3. /**
  4.  * @file
  5.  * Functionality for exportar_carousel
  6.  */
  7.  
  8. /**
  9.  * Implements hook_menu().
  10.  */
  11.  
  12. function exportar_carousel_menu(){
  13.    $items['exportar_carousel'] = array(
  14.          'title' => 'Exportar Carousel',
  15.          'page callback' => 'drupal_get_form',
  16.          'page arguments' => array('exportar_carousel_form'),
  17.          'access arguments' => array('exportar_carousel_permisos.'), //Mediante este enlace puedo crear un hook_permission para luego restringir en los permisos este acceso.
  18.          // 'access callback' => TRUE, //Acceso a todos
  19.          'type' => MENU_NORMAL_ITEM
  20.   );
  21.  
  22.  return $items;
  23. };
  24.  
  25.  
  26. /**
  27. * Implements hook_permission().
  28. */
  29. function exportar_carousel_permission() {
  30.     return array(
  31.     'exportar_carousel_permisos.' => array(
  32.         'title' => t('exportar_carousel'),
  33.         'restrict access' => true,
  34.         )
  35.     );
  36. }
  37.  
  38.  
  39. //Esta función permite crear una pagina con el form api.
  40. function exportar_carousel_form($form, $form_state){
  41.  
  42.  $form['exportar_carousel_fieldset']['contenedorresultado'] = array(
  43.  '#title' => t('En esta sección se mostrarán los resultados.'),
  44.  '#type' => 'fieldset',
  45.  '#collapsible' => FALSE, //Este permite que se pueda colapsar si esta en true
  46.  '#collapsed' => FALSE,  //Este es para que aparezca colapsado si esta en true.
  47.  
  48.  );
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  //textarea query_SQL
  55.  $form['exportar_carousel_fieldset']['contenedorresultado']['resultado'] = array(
  56.    
  57.  '#title' => t('Código HTML.'),
  58.  '#description' => t('<strong>Nota:</strong> si no se muestra este script, entonces refresque la página.'),
  59.  '#type' => 'textarea',
  60.  
  61.  
  62.  );
  63.  
  64.    //Creamos un botón el cual realizará varias funciones.
  65. $form['exportar_carousel_fieldset']['contenedorresultado']['buscar'] = array(
  66.   '#type' => 'submit',
  67.   '#value' => t('Buscar'),
  68. );  
  69.  
  70.  
  71.   //Creamos un botón el cual realizará varias funciones.
  72. $form['exportar_carousel_fieldset']['contenedorresultado']['limpiar'] = array(
  73.   '#type' => 'submit',
  74.   '#value' => t('Limpiar'),
  75.  
  76.  
  77. );  
  78.  
  79. [B][I]drupal_add_js(drupal_get_path('module', 'exportar_carousel') . '/obtener_escript.js');
  80. [/I][/B]
  81.  return $form;
  82. }

Como pudimos ver en el archivo .module está en negrita esta parte:
drupal_add_js(drupal_get_path('module', 'exportar_carousel') . '/obtener_escript.js');


desde aquí estoy llamando a mi archivo .js, pero para funcionar debe estar antes de retornar el $form, de lo contrario no me funciona.

Me gustaría saber como puedo ejecutar un código Jquery desde cualquier parte del archivo .module.
  #3 (permalink)  
Antiguo 31/01/2017, 10:20
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 10 meses
Puntos: 47
Respuesta: Usar jquery desde Drupal.

No termino de entender qué preguntas.
El módulo crea la página en el servidor y el js se ejecuta en el lado del cliente. No entiendo a qué te refieres con que debe estar antes de retornar el $form, Obviamente al cliente le tiene que llegar el html de la página creado con el módulo y con su js. Si luego el js hace bien su función y te pega dentro del text area ese contenido html del carrousel, ya el resto es cosa del módulo php que esté bien programado o no, no de el js. Seguro que es una obviedad lo que te estoy diciendo y se me escapa algo.
Como te digo no soy un experto programador (ni de lejos), y posiblemente no pueda ayudarte, pero será de ayuda para mí y mi aprendizaje entenderte y participar en tu solución.

Un saludo y gracias
  #4 (permalink)  
Antiguo 12/02/2017, 07:27
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 15 años, 7 meses
Puntos: 22
Respuesta: Usar jquery desde Drupal.

Cita:
Iniciado por JustinKO Ver Mensaje
No termino de entender qué preguntas.
El módulo crea la página en el servidor y el js se ejecuta en el lado del cliente. No entiendo a qué te refieres con que debe estar antes de retornar el $form, Obviamente al cliente le tiene que llegar el html de la página creado con el módulo y con su js. Si luego el js hace bien su función y te pega dentro del text area ese contenido html del carrousel, ya el resto es cosa del módulo php que esté bien programado o no, no de el js. Seguro que es una obviedad lo que te estoy diciendo y se me escapa algo.
Como te digo no soy un experto programador (ni de lejos), y posiblemente no pueda ayudarte, pero será de ayuda para mí y mi aprendizaje entenderte y participar en tu solución.

Un saludo y gracias
Muchas gracias por responderme.

Yo sé hacer módulos para Drupal y me contrataron para que haya un módulo que exporte el HTML de un carousel. Bien, el propósito al principio fue usar el módulo jcarousel y crear un carousel en de tipo block.
Luego pensé, con que sistema web es que puedo obtener el HTML de una página o de alguna sección de la página. En este sentido pensé en usar jQuery porque con pocas líneas de código haces algo como
Var HTML=jQuery (".Clase que quiero tomar el HTML").HTML() hlisto. Ya tengo en una variable el HTML.

En este sentido cree mi módulo con la finalidad que me cargue un archivo JS y me modifique el evento onclick y de esta forma cuando el usuario le de clic al botón, dicho botón ejecute el código HTML y lo ponga dentro del textarea.

Entonces hay una parte del módulo que hice que hace esto:
Código PHP:
Ver original
  1. //Esta función permite crear una pagina con el form api.
  2. function exportar_carousel_form($form, $form_state){
  3.  ...
  4.  
  5.   //Creamos un botón el cual realizará varias funciones.
  6. $form['exportar_carousel_fieldset']['contenedorresultado']['limpiar'] = array(
  7.   '#type' => 'submit',
  8.   '#value' => t('Limpiar'),
  9.  
  10.  
  11. );  
  12.  
  13. [B][I]drupal_add_js(drupal_get_path('module', 'exportar_carousel') . '/obtener_escript.js');
  14. [/I][/B]
  15.  return $form;
  16. }

Entonces en esta parte que es que creo el formulario HTML pero solo me funciona el archivo JS a tes de retornar el form.

Cualquier cosa, tu puedes crear cualquier módulo Drupal y las dudas las pones aquí y te ayudamos
  #5 (permalink)  
Antiguo 13/02/2017, 05:40
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 10 meses
Puntos: 47
Respuesta: Usar jquery desde Drupal.

Hola jeremiselxi,

Sí, si entendí el código jQuery y lo que querías hacer con él. Lo que no tengo muy claro es el módulo, qué es lo que hace o pretendes hacer con él.
El jQuery, lo que hace es como si el usuario copiara y pegar el html del carrousel en el text area, y parece correcto, pero hasta aquí el módulo, salvo crear el html de la página y añadir el js a esta, no afecta ni le afecta lo que pase en la página con el jQuery.
Si luego no envías el formulario a ningún sitio ni haces nada con él, porque es lo que me parece que dices ¿para qué ese módulo? con añadir el html y el jQuery es suficiente.
Si lo que quieres es enviar el html del formulario (que creo que no porque has desabilitado los botones para ello) el módulo llevaría un formulario normal y corriente, al que le añades por jQuery el texto con javascript (pero en el lado del cliente, por lo que es indiferente para el formulario).


No sé, creo que no te he entendido o se me está escapando algo.

(Te decía que no soy experto programador, pero sí que programo bastante y me he currado mis módulos de Drupal, eso sí, me tengo que documentar cada vez que hago uno)

Un saludo y gracias.

Por cierto (¿lo has solucionado?)

Etiquetas: jquery, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:55.