Como agregar archivos javascript en una página especifica con Drupal 7

Author Top
kenneth

En nuestros modulos personalizados en ciertas ocaciones debemos agregar archivos javascript para crear una caracteristica en particular. Ahora bien debemos indicarle al modulo que cargue dicho fichero y esto lo podemos conseguir definiendolo en el archivo *.info de nuestro modulo personalizado, como por ejemplo:

; $Id$
name = "Modulo personalizado"
description = "Descripcion de mi modulo personalizado."
package = Personalizado
core = 7.x

files[] = modulo_personalizado.js

O de igual forma podemos cargarlo implementando el hook_init, de la siguiente manera:

function modulo_personalizado_init(){
 drupal_add_js(drupal_get_path('module', 'modulo_personalizado') . '/modulo_personalizado.js');
} 

El inconveniente es que este archivo se nos cargara en todas las paginas del proyecto. Ahora si lo que necesitamos es cargarlo en una pagina en particular, por ejemplo en las paginas administrativas para edicion de nodos para un tipo de nodo especifico, para esta tarea podriamos usar expresiones regulares y validar el tipo del nodo actual. Podriamo emplear un codigo similar al siguiente:

function modulo_personalizado_init(){
  $current_path = current_path();
  $node = menu_get_object();

  if (drupal_match_path($current_path, "node/*/edit") && (isset($node) && is_object($node) && $node->type == 'MI_TIPO_CONTENIDO')) {
    drupal_add_js(drupal_get_path('module', 'modulo_personalizado') . '/modulo_personalizado.js');
  }
}

El detalle de esta posible solucion, es que se ve penalizado el rendimiento puesto que el hook_init() se ejecutar para todas las peticiones al servidor incluyendo las llamadas AJAX, entonces lo recomendable en estos casos seria utilizar el #attached la cual nos permite cargar archivos javascript cuando se esta contruyendo el formulario, implementando el hook_form_FORM_ID_alter, en la linea #1 podemos ver el ID del formulario, en el cual podemos estar seguro que se adjuntara para los formulario del tipo de contenido que deseamos,  de la siguiente manera:

// $form_id = 'MI_TIPO_CONTENIDO_node_form';
 
function modulo_personalizado_form_MI_TIPO_CONTENIDO_node_form_alter(&$form, &$form_state) {
  $form['#attached']['js'] = array(
    drupal_add_js(drupal_get_path('module', 'modulo_personalizado') . '/modulo_personalizado.js'),
  );
}

Espero que esto les sea de mucha ayuda,

bursa esc
bursa eskort
bursa escort bayan bursa travesti escort bursa merkez escort bursaescort bursa escort bayanlar alanya eskort bayan antalya bayan eskort havalimanı transfer