javascript in un unico nodo

Posts: 27
Iscritto il: 19 Maggio 07

Come da topic, vorrei includere un file .js solo in un nodo specifico... ho trovato questo codice sul sito ufficiale

<?php
if ($_SERVER['REQUEST_URI'] == '/path/to/node') {
 
drupal_add_js('somefile.js');
}
?>

l'ho inserito nella pagina page.tpl.php del mio template ma non funziona... dove sbaglio?


Posts: 1775
Iscritto il: 01 Gen 07
Admin di Drupal ItaliaSviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneTraduttore

l'hai inserito prima di

<?php
print $scripts;
?>

vero?
Controlla e prova a rimuovere il controllo dell'IF e vedi se in quel modo ti viene inserito sempre, poi eventualmente c'è da capire perché non effettua il controllo dell'URL...

__________________

Ciao
    Mavimo
_________________
Io mio sito su Drupal, CFD e OpenFOAM (e se vi chiedete cosa c'entrano l'uno con l'altro.. bhè, non so nemmeno io la risposta Sticking out tongue )


Posts: 27
Iscritto il: 19 Maggio 07

l'ho inserito dopo perchè ho altro javascript comune inserito a mano che funziona perfettamente... ho tolto l'IF dal codice e non funziona lo stesso...


Posts: 27
Iscritto il: 19 Maggio 07

l'ho inserito dopo.. ho altro javascript comune inserito a mano che funziona perfettamente... ho tolto l'IF dal codice e non funziona lo stesso...


Posts: 61
Iscritto il: 19 Giu 07

se lo inserisci dopo non puoi pretendere che funzioni..i browser caricano in maniera sequenziale, come fa il browser a lanciare uno script che non ha ancora caricato??

[sempre se il problema era quello]


Posts: 1775
Iscritto il: 01 Gen 07
Admin di Drupal ItaliaSviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneTraduttore

Più che il browser il problema sarebbe l'interprete PHP sul server..comunque il concetto è circa quello Laughing out loud

__________________

Ciao
    Mavimo
_________________
Io mio sito su Drupal, CFD e OpenFOAM (e se vi chiedete cosa c'entrano l'uno con l'altro.. bhè, non so nemmeno io la risposta Sticking out tongue )


Posts: 27
Iscritto il: 19 Maggio 07

non ho molto capito cosa intendete...

se metto quel codice prima o dopo va a finire sempre dentro l'head della pagina e quindi è indifferente se prima o dopo... no?

Ho del codice javascript che ho inserito dopo

<?php
print $scripts;
?>

che funziona perfettamente su tutto il sito...

comunque ho provato ad inserirlo anche prima ma non ha funzionato... qualche suggerimento?


Posts: 1775
Iscritto il: 01 Gen 07
Admin di Drupal ItaliaSviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneTraduttore

Non è uguale per il fatto che in questo modo tu dici di aggiungere all'elenco dei JS che dovrà inserire nella pagina quello indicato dal percorso, se però lo inserisci DOPO che gli header della pagina siano già stati stampati non viene inserito e quindi lo carica Laughing out loud
Prova a usare il codice della funzione completo, ovvero:

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

Ovviamente mettendo il path al file JS corretto.

__________________

Ciao
    Mavimo
_________________
Io mio sito su Drupal, CFD e OpenFOAM (e se vi chiedete cosa c'entrano l'uno con l'altro.. bhè, non so nemmeno io la risposta Sticking out tongue )


Posts: 321
Iscritto il: 02 Feb 06
Sviluppatore DrupalTraduttore

rave wrote:
Come da topic, vorrei includere un file .js solo in un nodo specifico... ho trovato questo codice sul sito ufficiale

<?php
if ($_SERVER['REQUEST_URI'] == '/path/to/node') {
 
drupal_add_js('somefile.js');
}
?>

l'ho inserito nella pagina page.tpl.php del mio template ma non funziona... dove sbaglio?

Per curiosità, hai messo al posto di path/to/node il nodo specifico dove includere il file di javascript?

__________________

Posts: 27
Iscritto il: 19 Maggio 07

certo... Laughing out loud

tu hai provato... e ti funziona?


Posts: 321
Iscritto il: 02 Feb 06
Sviluppatore DrupalTraduttore

Il problema potrebbe essere dovuto a qualche slash in più o in meno, fai una cosa:
Crea un blocco e scrivici dentro queste righe:

<?php
print $_SERVER['REQUEST_URI'];
?>

Salvalo come contenuto PHP e abilitalo, dopodichè raggiungi la pagina cui vorresti aggiungere il file .js e assicurati che le stringhe corrispondano.
Inoltre ricordati di mettere il path relativo rispetto alla directory radice (dove hai il file index.php) del file .js dentro la funzione drupal_add_js().

Più di così non saprei proprio dove sbagli.

__________________

Posts: 27
Iscritto il: 19 Maggio 07

TheCrow wrote:
Il problema potrebbe essere dovuto a qualche slash in più o in meno, fai una cosa:
Crea un blocco e scrivici dentro queste righe:

<?php
print $_SERVER['REQUEST_URI'];
?>

Salvalo come contenuto PHP e abilitalo, dopodichè raggiungi la pagina cui vorresti aggiungere il file .js e assicurati che le stringhe corrispondano.
Inoltre ricordati di mettere il path relativo rispetto alla directory radice (dove hai il file index.php) del file .js dentro la funzione drupal_add_js().

Più di così non saprei proprio dove sbagli.

non penso sia necessario.. ho messo il file javascript nella directory radice del sito e anche nella directory del tema per cui...

Tu hai provato il codice che ho messo nel primo topic? Ti funziona?

Mavimo ho provato anche quel codice ma niente...


Posts: 27
Iscritto il: 19 Maggio 07

mavimo wrote:
Non è uguale per il fatto che in questo modo tu dici di aggiungere all'elenco dei JS che dovrà inserire nella pagina quello indicato dal percorso, se però lo inserisci DOPO che gli header della pagina siano già stati stampati non viene inserito e quindi lo carica :D

Probabilmente dimostrerò ancora una volta la mia ignoranzaLaughing out loud ma..... il mio file pag.tpl.php si presenta così:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php print $language ?>" xml:lang="<?php print $language ?>">

<head>
  <title><?php print $head_title ?></title>
  <?php print $head ?>
  <?php print $styles ?>
  <?php print $scripts ?>
<script type="text/javascript"><?php /* Needed to avoid Flash of Unstyle Content in IE */ ?> </script>
</head>

etc...

Il codice non va a finire prima del tag </head> in ogni caso?


Posts: 1775
Iscritto il: 01 Gen 07
Admin di Drupal ItaliaSviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneTraduttore

Andiamo un passo alla volta. Vai in http://nomesito/?q=admin/build/block e crea un nuovo blocco di codice tipo PHP e copiaci il testo che riporto di seguito, ovviamente modifica il path del tuo script e ilpath della pagina che deve contenere lo script (se usi il modulo path allora ovviamente non dovrai mettere /?q=admin/build/block ma /admin/build/block)

<?php
if($_SERVER['REQUEST_URI'] == '/?q=admin/build/block') {
    
drupal_add_js(path_to_theme().'/js/script.js', NULL, 'header');
     print
"Aggiunto";
} else {
     print
"Non aggiunto";
}
?>

Abilita il modulo e posizionalo da qualche parte in modo che si possa vedere se è stato aggiunto o meno. A quel punto se tutto funzioan come vuoi passaimo a passarlo nel tema, altrimenti vediamo cosa non va Laughing out loud

__________________

Ciao
    Mavimo
_________________
Io mio sito su Drupal, CFD e OpenFOAM (e se vi chiedete cosa c'entrano l'uno con l'altro.. bhè, non so nemmeno io la risposta Sticking out tongue )


Posts: 27
Iscritto il: 19 Maggio 07

Se creo il blocco con quel codice funziona!!!... mentre se lo metto nel pag.tpl.php no....


Posts: 321
Iscritto il: 02 Feb 06
Sviluppatore DrupalTraduttore

Incolla lo script nel file node.tpl.php invece di page.tpl.php, facendo così dovrebbe funzionare, in realtà funziona anche se lo scrivi direttamente nel nodo... senza la struttura if

__________________

Condividi contenuti