drupal_add_js nur für bestimmte Seiten benutzen
Eingetragen von brucebanner (9)
am 03.08.2010 - 10:29 Uhr in
am 03.08.2010 - 10:29 Uhr in
Hi zusammen,
habe folgendes Problem. Da es leichte Konflikte zwischen zwei js-Dateien gibt, möchte ich eine JS-Datei nur auf EINER bestimmten Seite integriert haben.
Momentan habe ich es wie folgt gelöst:
In der page.tpl:
<?php if ($title = 'termine') { add_termine(); } ?>
Und die Funktion in der template.php
function add_termine() {
drupal_add_js(drupal_get_path('theme', 'testtheme') . '/js/termine.js');
}
Aber irgendwie scheint das ganze nicht zu greifen. Hat hier jemand noch ne andere Idee, wie man das lösen kann, dass eine bestimmte js nur auf einer Seite integriert wird?... ohne extra ein ganzes Modul zu programmieren!?
Vielen Dank schonmal
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich würde die Variable
am 03.08.2010 - 11:08 Uhr
Ich würde die Variable
$scripts
mittels preprocess erweitern. Etwa so:<?php
function deintheme_preprocess_page(&$variables) {
if (/* du bist meine seite */) {
drupal_add_js(drupal_get_path('theme', 'testtheme') . '/js/termine.js');
$variables['scripts'] = drupal_get_js();
}
}
?>
Schonmal Danke für den Tipp.
am 03.08.2010 - 13:42 Uhr
Schonmal Danke für den Tipp. Habe jetzt nur folgendes in die template.php geschrieben:
if ($arg0 == "termine") {
drupal_add_js(drupal_get_path('theme', 'testtheme') . '/js/termine.js');
$variables['scripts'] = drupal_get_js();
}
Aber irgendwie funktioniert auch das nicht. Hast du noch eine Idee?
Variablen
am 03.08.2010 - 14:01 Uhr
Hallo.
Wo genau (also in welche Funktion) hast Du das geschrieben? Woher kommt
$arg0
?Bitte nicht nur kleine Häppchen posten sondern den Code auch so zitieren, dass auch Außenstehende den Zusammenhang erkennen können.
Stefan
Habe das in die
am 03.08.2010 - 14:12 Uhr
Habe das in die "phptemplate_preprocess_page" Funktion geschrieben. $arg0 sollte mir ja eigentlich den Pagetitel liefern oder? Hier der ganze Auszug der Funktion:
<?php function phptemplate_preprocess_page(&$vars) {
$vars['tabs2'] = menu_secondary_local_tasks();
// Hook into color.module
if (module_exists('color')) {
_color_page_alter($vars);
}
//Make sure shadowbox menu links use a different template
$arg0 = arg(0);
if($arg0 == "node") {
$sbit = arg(2);
}
else if ($arg0 == "contact") {
$sbit = arg(1);
}
if (isset($sbit) && $sbit=="sb"){
$vars['template_file'] = 'sb-popup';
}
if ($arg0 == "termine") {
drupal_add_js(drupal_get_path('theme', 'testtheme') . '/js/termine.js');
$variables['scripts'] = drupal_get_js();
}
} ?>
Debug-Ausgaben
am 03.08.2010 - 14:40 Uhr
Lass Dir doch mal ausgeben, welchen Wert
$arg0
enthält.Ok, ich gebe dir Recht. arg0
am 03.08.2010 - 20:35 Uhr
Ok, ich gebe dir Recht. arg0 war keine gute Lösung :))
Aber selbst wenn ich es über die Variable head_title versuche, will der die javascript Datei einfach nicht hinzufügen
if ($vars[head_title] == "termin") {
drupal_add_js(drupal_get_path('theme', 'testtheme') . '/js/termine.js');
$variables['scripts'] = drupal_get_js();
}
Ich bin echt am verzweifeln :(
termin = termine ? Oder war
am 04.08.2010 - 07:50 Uhr
termin = termine ? Oder war das ein Tippfehlerteufel?
Und die Ausgabe von
$vars[head_title]
hast du ja schon geprüft, stimmts?Und ob deine Änderungen direkt übernommen werden auch?
Ne, Tippfehler waren keine
am 04.08.2010 - 09:06 Uhr
Ne, Tippfehler waren keine drin. Habs jetzt aber hinbekommen :) Und zwar habe ich das ganze einfach aus der phptemplate_preprocess_page-Funktion raus genommen und die node-ID als Abfragewert genommen und da lief es plötzlich. Das ganze liegt jetzt so einfach in der template.php:
<?php $nid = arg(1);
if ($nid == 14) {
drupal_add_js(drupal_get_path('theme', 'testtheme') . '/js/termine.js');
$variables['scripts'] = drupal_get_js();
} ?>
Auf jeden Fall Danke für die schnellen Antworten..