Come indicato da altri, semplicemente utilizzando drupal_add_js()
da un'implementazione hook_preprocess_page()
non funziona. I riferimenti ai file JavaScript raccolti attraverso le chiamate multiple a drupal_add_js()
vengono utilizzati per generare il markup corrispondente nelle variabili $scripts
da template_preprocess_page()
. L'implementazione di un tema di hook_preprocess_page()
viene sempre chiamata dopo template_preprocess_page()
. Quindi, al fine di avere i file aggiunti attraverso drupal_add_js()
nel .tpl.php
file (s), è necessario eseguire l'override del già impostato $scripts
variabili:
function THEME_preprocess_page(&$variables)
drupal_add_js(...);
$variables['scripts'] = drupal_get_js();
}
Ma, non si dovrebbero avere per aggiungere jquery.js
e drupal.js
te stesso, dovrebbe già essere fatto automaticamente dal core Drupal. Se hai bisogno di farlo da solo, allora qualcosa è rotto sul tuo sito. È possibile (ri) aggiungere i file come soluzione rapida, ma è meglio individuare la causa principale del problema poiché è probabile che crei altri problemi che non sono ancora stati identificati (o si è lavorato attorno senza accorgersene).
fonte
2011-10-31 11:40:57
Hai ragione. Una volta che l'ho estratto dalla funzione e l'ho posizionato all'esterno nell'ambito globale, funziona come un fascino :) :) Ho un'altra domanda però. si tratta puramente di conoscenza. Perché drupal aggiunge questi file due volte da due diverse posizioni nell'output? Ecco come appare - – Andrew
Come suggerito dall'utente - scott, ho smesso di usare quei file nella mia cartella dei temi e ho usato i valori predefiniti di drupal. Quindi non c'è alcun riferimento alla funzione drupal_add_js; in altre parole, solo il nome del file - drupal_add_js ('jquery.js') – Andrew
eew, quei due file dovrebbero essere automaticamente aggiunti al tema da drupal. l'intera raccolta di file js viene aggiunta alla pagina dagli php print $ scripts?> on page.tpl.php –