Variable von template.php an script.js übergeben
am 01.03.2010 - 01:46 Uhr in
Moin,
ich versuche eine ganz triviale Sache, die mit Modulen auch immer super funktionert hat. Jetzt will es aber innerhalb eines Themes einfach nicht laufen:
In der template.php wird bei Abarbeitung von page.tpl.php folgende Funktion aufgerufen:
<?php
function myTheme_test() {
$settings = array(
'test' => 'foobar',
);
drupal_add_js(array('myTheme' => $settings), 'setting');
}
?>Testweise soll dieses 'foobar' einfach mal durch ein alert ausgegeben werden.
script.js:
Drupal.behaviors.myTheme = function(context) {
var test = Drupal.settings.myTheme.test;
alert(test);
}Leider passiert nichts. Firebug sagt mir "Drupal.settings.myTheme is undefined".
Was ist hier los? Habe die Funktion myTheme_test() aus der template.php auch schon direkt in der ersten Zeile der page.tpl.php aufrufen lassen, was aber auch nichts genützt hat.
Wäre über jede Hilfe dankbar!
Greetz haggis
P.S: die myTheme_test() wird auf jeden Fall korrekt aufgerufen, denn ein "dpm('gnarf');" erzeugt die Meldung.
- Anmelden oder Registrieren um Kommentare zu schreiben

Jetzt hab ichs raus! Wenn ich
am 01.03.2010 - 13:32 Uhr
Jetzt hab ichs raus!
Wenn ich in der template.php die Funktion statt myTheme_test() myTheme_preprocess(&$vars, $hook) nenne, dann funktionierts.
Edit:
Ein Problem taucht aber auf: die mytheme_preprocess() wird mehrfach aufgerufen, weshalb sich der Wert der Variablen ändert (statt 'foobar' bekomme ich 'foobar,foobar,foobar,foobar'.
Irgendeine Idee?
Edit2:
die mytheme_preprocess() wird wohl für jeden Block einmal aufgerufen, genauso für den Footer-Bereich. Habe versucht beim erstmaligen aufruf $vars['myTheme_preprocessed'] zu setzen, damit ich überprüfen kann, ob die Funktion schon einmal aufgerufen wurde. Hat aber leider nichts genützt.
Edit3:
Mit mytheme_preprocess_page() funktioniert es.