Problemone: file js duplicato senza motivo?

6 contenuti / 0 new
Ultimo contenuto
Problemone: file js duplicato senza motivo?

Ragazzi, ho un problemone che non riesco a risolvere... Vi spiego:

ho un aggiunto nel file "template.php" un pezzo di codice che dice che se e' la home page, allora deve aggiungere:

file.js

nella cartella scripts del mio sito, ho il suddetto file ma con estensione php, perche' nel file c'e' un pezzetto di php e poi tutto javascript. Io devo far eseguire quel pezetto di php e poi tutto il restante js.
Allora nell' .htaccess ho inserito una RewriteRule che dice che

file.php deve diventare file.js

infine nel body della home page ho inserito la chiamata a file.js

Il file.js viene richiamato correttemente nella home page, funziona tutto alla perfezione, ma ora arriva il problemone...
Se infatti analizzo la home page con "pingdom tool" con "page speed google" o con "gtmetrix" risulta che alla home page viene aggiunto anche:

file.js?n5xc7j

Praticamente lo stesso identico file ma con il nome diverso! mi sapresti dire come e' possibile???????????

sono solo 50kb in piu' inutili :/

Mi sembra una cosa assurda....

Spero qualcuno possa farmi capire qualcosa. Grazie mille!

Drupal Version:

Ciao,
non fai prima ad utilizzare la funzione drupal_add_js() che ti permette di inserire uno script (interno, esterno o inline) direttamente senza fare tutti questi giri? Basta che la richiami nel tuo template.php in hook_preprocess_page o hook_preprocess_html, in questo modo puoi farti tutti i calcoli con php che ti servono e ritornare il file js.
;)

Oltre a quello che ti suggerisce gioppy io ti consiglierei di separare PHP e JS.
Se ti serve fare dei calcoli prima da utilizzare all'interno di quel file JS allora fai i calcoli all'interno di un hook_preprocess_page e poi via drupal_add_js() li passi alla pagina web come variabili JS, variabili che userai all'interno del tuo file JS.

Devi guardare drupal_add_js() e "settings".

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

si io nel template, all'interno di

sottotema_preprocess_html(&$variables)

ho inserito:

if(drupal_is_front_page()){
  drupal_add_js(path_to_theme() . '/scripts/file.js');
  }

poi nell'.htaccess ho una RewriteRule che converte file.php in file.js

e infine nel body della home page ho inserito la chiamata (tag script) del file.js

@ziobudda

la tua idea è buona, ma io non sono così preparato :/ non so come fare...

Come suggerisce ziobudda, nel tuo drupal_add_js puoi passare anche delle strutture che vengono salvate in Drupal.settings (se vedi il codice sorgente delle pagine generate, noterai che c'è una parte di javascript che inizia con Drupal.settings. Per esempio, nel tuo hook_preprocess_page puoi fare:

<?php
if(drupal_is_front_page()){
 
drupal_add_js(array('mymodule' => array('var1' => 'value1', 'var2' => 'value2')), 'setting');
 
drupal_add_js(path_to_theme() . '/scripts/file.js');
}
?>

In questo modo, vai ad aggiungerti in quella parte tutte le variabili/strutture che ti servono e, all'interno dei tuoi javascript, le ricavi semplicemente con:

  var a = Drupal.settings.mymodule.var1;

;)

@gioppy non so... credo che nel mio caso sia un po' più complicato...
il pezzo di php presente nel file.js mi crea un array (che viene preso da una tabella del database).
Ma la tabella del database si aggiorna ogni 6 minuti...

non conoscete un metodo del genere:

if(drupal_is_front_page()){
non aggiungere "file.js?"
 

cioè che se c'è un file.js che ha il punto interrogativo nel nome, non venga aggiunto ???