Aggiungi JavaScript in un tipo di contenuto specifico


9

Vorrei sapere qual è il modo migliore per aggiungere un file JavaScript in una pagina specifica in base al tipo di contenuto. Ad esempio, voglio aggiungere questo:

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

Finora, quello che ho fatto è usare questo modo per aggiungere il mio tipo di contenuto specifico. Per il tipo di contenuto map_page, aggiungo le due righe di codice sottostanti nella pagina - map_page.tpl.php.

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

C'è un altro modo migliore? se possibile può fare qualche esempio, al momento non capisco davvero bene ...

Risposte:


6

Non posso commentare l'equivalente di Drupal 7 corretto, ma nei siti Drupal 6 lo faccio in una template_preprocess_page .

Avrò un po 'di logica per prendere la decisione (sulla base arg()o page_manager_get_current_page()da pannelli), e quindi anteporre $vars["scripts"]con lo script esterno. Anticipo in modo da non incorrere in problemi di dipendenza con nessuno script locale.

A volte imposterò anche una nuova regione chiamata $global_scriptsthinks come Google API e SWFObject che voglio caricare da un CDN, e questo viene stampato prima $scriptsnel modello di pagina.

Ad essere sincero, anche se normalmente ho tutti i JS su tutte le pagine in modo che i file vengano memorizzati nella cache.


6

Poiché Drupal non ti permetterà di ridefinire template_preprocess_node(perché è già definito in node.module), ho aggiunto una funzione di preprocessore nel mio modulo personalizzato:

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

Ho usato preprocess_nodepiuttosto che preprocess_pageperché è più facile arrivare al tipo di nodo. Se fai effettivamente riferimento a un file javascript, verrà automaticamente memorizzato nella cache ( vedi la sezione Parametri ).


2

puoi anche usare hook_node_view check per il tipo di contenuto e quindi aggiungere js nel modo in cui stai già facendo.

O

Se hai un campo che genera le informazioni che useranno JS, usa un preprocessore per aggiungere js, quindi js include dipende dal campo che mostra la mappa piuttosto che dal tipo di contenuto.


0

Una soluzione semplice è semplicemente inserire add_js:

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

nella pagina / nodo template.php.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.