Caricare script jquery e altri javascript nel template [RISOLTO]

11 contenuti / 0 new
Ultimo contenuto
Caricare script jquery e altri javascript nel template [RISOLTO]

Ciao,
ho inserito nel mio template alcune parti in jquery ed un file javascript.

Il problema che ho riscontrato è che non carica automaticamente jquery e il mio javascript. La domanda è: come devo fare per poter inserire il codice per far partire l'esecuzione degli script automaticamente nel header?

io ho provato cosi ma non funziona (l'ho scritto prima del <?php print $scripts ?>):

<?php
 drupal_add_js
(path_to_theme().'/js/effects.js', NULL, 'header');
?>

nel file javascript ho scritto questo:

if (Drupal.jsEnabled) {
  $(document).ready(Drupal.shelfwrapAuto);
  $(document).ready(Drupal.Login_ForumAuto);
}

La cosa strana è che se inserisco un nuovo post con al suo interno del codice di tipo jquery drupal carica in automatico jquery

ho visto che c'é un post simile: http://www.drupalitalia.org/node/2654

Grazie, CIao

Dopo la riga

<?php
 
print $scripts;
?>

inserisci la seguente:

<script type="text/javascript" src="<?php print drupal_get_path('theme','nome_cartella_tema'). /js/effects.js'; ?>"></script>

adesso non ricordo se drupal_get_path restituisce lo slash finale... casomai controlla.

Grazie 1000 funziona alla perfezione. Adesso ho un'altro problemino: nel mio script uso funzioni di jquery e per far funzionare tutto correttamente devo anche caricare jquery.
Esiste un metodo dinamico per caricare jquery quando carica il mio script?
Ciao

Per adesso mi viene in mente una modalità semidinamica... all'interno del file javascript inserisci questa riga in cima a tutto:

document.write('<script type="text/javascript" src="percorso_del_file_jquery"></script>');

altrimenti puoi racchiudere la riga precedente in una funzione e richiamarla quando vuoi tu.. (sempre prima dei comandi jquery si intende).

Ho notato che se non c'é bisogno di jquery nella pagina drupal giustamente non lo carica, ma appena inserisco un post con del codice javascript che va a richiamare delle funzioni di jquery viene automaticamente caricato nel header. Io vorrei fare un cosa del genere anche nel template, se jquery é già stato caricato in automatico da drupal non deve aggiungere altre righe, mentre se jquery non compare come script caricato allora lo carico.
Alla fine voglio ottenere sempre jquery attivo ma scrivendolo solo una volta nel header.

Se prendo il caso che ho un post con codice jquery e nel template scrivo di caricare jquery alla fine se guardo il codice html prodotto posso vedere che carica per ben due volte jquery e questo lo voglio evitare. Esiste un metodo? Magari devo solo inserire nella funzione in javascript un comando che dice a drupal di controllare e caricare i moduli per jquery ma non so quale!?

Grazie , Ciao

Ho sistemato tutto grazie a mavimo in IRC.

ecco la soluzione:

<?php
unset($js['core']['misc/jquery.js']);
$js = drupal_add_js(path_to_theme().'/js/effects.js', NULL, 'header');
print
drupal_get_js('header', $js);
?>

  <?php print $scripts ?>

Aggiungi RISOLTO al titolo del post, grazie.

Ciao
Marco
--
My blog
Working at @agavee

Ho riscontrato un altro problemino, carica tutti i codici javascript 2 volte:

SOLUZIONE: eliminare la riga <?php print $scripts ?>

Riscrivo la soluzione completa:

<?php
unset($js['core']['misc/jquery.js']);
$js = drupal_add_js(path_to_theme().'/js/effects.js', NULL, 'header');
print
drupal_get_js('header', $js);
?>

   <!-- <?php print $scripts ?> --> <!-- eliminare dal template -->

Se hai anche tempo di scrivere un nodo completo su questo lo aggiungiamo al volo nella DOC, a quanto pare il canale IRC da anche i suoi frutti in termine di DOC prodotta :P

Ciao
Marco
--
My blog
Working at @agavee

Ciao a tutti, io ho un'esigenza simila con drupal 6.

<?php
 
if ($show_messages && $messages):
?>

$(function() {
setTimeout(function() {
$(".messages").fadeOut(3000)
}, 000);
});

<?php
 
print $messages; endif;
?>

Dovrei eseguire questo semplicissimo codice solo se si verifica quella condizione, pero' non riesco a capire come dire a drupal di caricare jquery! Preciso inoltre che questo codice si trova dentro la pagina, a metà.

Aiuto!

Per aggiungere un JS nelle pagine del template, aggiungetelo direttamente nel NOME_TEMA.info in modo che venga caricato in automatico.

Ciao
Marco
--
My blog
Working at @agavee