Agregar JavaScript a un tipo de contenido específico


9

Me gustaría saber cuál es la mejor manera de agregar un archivo JavaScript en una página específica basándose en el tipo de contenido. Por ejemplo, quiero agregar esto:

<script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script>

Hasta ahora, lo que he hecho es usar esta forma para agregar a mi tipo de contenido específico. Para el tipo de contenido map_page, agrego las dos líneas de código a continuación en la página: map_page.tpl.php.

drupal_add_js("http://maps.google.com/maps/api/js?sensor=false", 'external');
$scripts = drupal_get_js();

¿Hay alguna otra mejor manera? si es posible puede dar algún ejemplo, actualmente no lo entiendo muy bien ...

Respuestas:


6

No puedo comentar sobre el equivalente adecuado de Drupal 7, pero en los sitios de Drupal 6 hago esto en una página template_preprocess_ .

Tendré algo de lógica para tomar la decisión (ya sea basada en arg()o page_manager_get_current_page()desde paneles), y luego anteponer $vars["scripts"]el script externo. Prefiero para no tener problemas de dependencia con ningún script local.

A veces, también configuro una nueva región que se requiere $global_scriptspara pensar como API de Google y SWFObject que quiero cargar desde un CDN, y esto se imprime antes $scriptsen la plantilla de página.

Para ser honesto, aunque normalmente tengo todos los JS en todas las páginas para que los archivos se almacenen en caché.


6

Dado que Drupal no le permitirá redefinir template_preprocess_node(porque ya está definido en node.module), agregué una función de preprocesador en mi módulo personalizado:

function mymodule_preprocess_node(&$vars) {
  if ($vars['type'] == 'my-node-type') {
    drupal_add_js(drupal_get_path('module', 'mymodule') . '/myjs.js');
  }
}

Solía preprocess_nodemás que preprocess_pageporque es más fácil llegar al tipo de nodo. Si realmente hace referencia a un archivo javascript, se almacenará en caché automáticamente ( consulte la sección Parámetros ).


2

también puede usar la verificación hook_node_view para el tipo de contenido y luego agregar el js de la forma en que ya lo está haciendo.

O

Si tiene un campo que genera la información que utilizará el JS, use un preprocesador allí para agregar js, por lo que js include depende del campo que muestre el mapa en lugar del tipo de contenido.


0

Una solución simple es simplemente colocar add_js:

  drupal_add_js('drupal_get_path('module', 'mymodule') . '/myjs.js');

en la página / nodo template.php.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.