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
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.
$(function() {
setTimeout(function() {
$(".messages").fadeOut(3000)
}, 000);
});
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