Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

Gelöst: jQuery-Problem

Eingetragen von hermanns (90)
am 25.02.2008 - 17:00 Uhr in
  • Themes & Theming
  • Drupal 5.x oder neuer

Hallo Drupaler,

bin langsam etwas verzweifelt. Hier kurz das Problem:
Ich möchte eine Liste mit Bildern mit einem Plug-In für jQuery überblenden lassen. Das Einbinden der verlinkten jQuery-Datei bekomme ich noch hin, allerdings der 2te Schritt das Aufrufen der Funktion funktioniert einfach nicht.
Denn ich bekomme folgende Fehlermeldung:
Parse error: syntax error, unexpected '(', expecting T_VARIABLE or '$' in /mnt/web5/23/21/5284521/htdocs/drupal/includes/common.inc(1352) : eval()'d code on line 2

Hier der Code in den anderen Daten:
node.tpl.php

<?php
 
if (Drupal.jsEnabled) {
 
$path = drupal_get_path('module', 'innerfade');
 
drupal_add_js($path . 'js/jquery.innerfade.js');
  }
?>

und noch im Content (also über das CMS eingegeben)

<?php  drupal_add_js(
  $(
document).ready( function() {
    $(
'#fade').innerfade({
   
speed: 'slow',
   
timeout: 4000,
   
type: 'sequence',
   
containerheight: '220px' }); }); );
?>

Interessant finde ich auch, dass es nirgends ein einfach verständliches Tutorial zum Thema "jQuery-Einbindung" gibt. Naja vielen Dank schonmal.

Dirk

‹ Usernode Hintergrund wechseln [gelöst] Framework-Modul ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

PHP/JS Mix

Eingetragen von stBorchert (6003)
am 25.02.2008 - 18:03 Uhr

Moin!
Nur ganz kurz und ohne mal wirklich detaillierter über den Code geschaut zu haben:

hermanns schrieb

node.tpl.php

  if (Drupal.jsEnabled) {

"Drupal.jsEnabled" ist kein php-Konstrukt, sondern gehört in den Javascript-Teil.

hth,

Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also die *.js Dateien binde

Eingetragen von witzel (163)
am 25.02.2008 - 18:07 Uhr

Also die *.js Dateien binde ich so in meine page.tpl ein:

<script type="text/javascript" src="<?php print drupal_get_path('theme','zen') . '/js/interface.js'; ?>"></script>

Die spezielle Funktion schreibe ich dann in den content, und alles funktioniert super.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke schonmal!

Eingetragen von hermanns (90)
am 25.02.2008 - 18:28 Uhr

Danke Danke, aber das Problem liegt, denke ich, an anderer Stelle. Die JS-Datei wird ohne Probleme eingebunden. Doch die neue Anweisung bzw. die 2 Anweisung die sich auf die jQuery und innerfade.js bezieht, wird nicht erkannt und ich bekomme eine Fehlermeldung ausgegeben.

Auch der Hinweis auf dem Mischmasch aus PHP und JS kann ich nachvollziehen, jedoch bleibt das Problem bestehen, wenn diese Zeile ausgenommen wird.

Wie gesagt, ich denke er erkennt diese Anwendung trotz drupal_add_js nicht als jQuery.

creatin g GmbH | optimiertes Kommunikationsdesign
http://www.creatin-g.de (Website) | http://twitter.com/creatin_g (twitter)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es muss $function() heißen,

Eingetragen von Alexander Langer (3416)
am 25.02.2008 - 18:58 Uhr

Es muss $function() heißen, nicht function() .

--
"Look, Ma, I'm dead!"
Cell, Stephen King

Suchmaschinenoptimierung (SEO) & Drupal

  • Anmelden oder Registrieren um Kommentare zu schreiben

Fehler?

Eingetragen von stBorchert (6003)
am 26.02.2008 - 15:50 Uhr
hermanns schrieb

...Doch die neue Anweisung bzw. die 2 Anweisung die sich auf die jQuery und innerfade.js bezieht, wird nicht erkannt und ich bekomme eine Fehlermeldung ausgegeben.

Aha. Und welche?

hermanns schrieb

Auch der Hinweis auf dem Mischmasch aus PHP und JS kann ich nachvollziehen, jedoch bleibt das Problem bestehen, wenn diese Zeile ausgenommen wird.

<?php
 
if (Drupal.jsEnabled) {
 
$path = drupal_get_path('module', 'innerfade');
 
drupal_add_js($path . 'js/jquery.innerfade.js');
  }
?>

"Drupal.jsEnabled" ist JavaScript-Code und hat nichts in Deinem php-Code zu suchen. Du wirst wahrscheinlich auch in Deinen log-Dateien (so denn welche geschrieben werden) einen Fehler finden, der Dir sagt, dass das Objekt "Drupal" und speziell das Attribut "jsEnabled" dieses Objektes nicht gefunden werden kann.

hermanns schrieb

Wie gesagt, ich denke er erkennt diese Anwendung trotz drupal_add_js nicht als jQuery.

Naja, bei genauerem Hinsehen vermisse ich da Anführungszeichen. Der Code sollte also so aussehen:

<?php
 
drupal_add_js
("
  $(function() {
    $('#fade').innerfade({
    speed: 'slow',
    timeout: 4000,
    type: 'sequence',
    containerheight: '220px'
  });
"
);
?>

Ich habs mal ein klein wenig angepasst, nicht erschrecken :-).

hth,

Stefan

PS:

Alexander-Langer schrieb

Es muss $function() heißen, nicht function().

Wie kommst Du denn auf soetwas?

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Läuft!

Eingetragen von hermanns (90)
am 26.02.2008 - 16:22 Uhr

Sorry, meld mich etwas verspätet. Gestern hab ichs noch zum laufen bekommen.
Hier der Code:

<script type="text/javascript">
$(document).ready( function(){ $('#fade').innerfade({ speed: 'slow', timeout: 4000,  type: 'sequence', containerheight: '180px' }); })</script>

Also vielen Dank für deine Anpassungen, Stefan. Ich vermute mal, dass irgendein Problem vorliegt, wenn ich den PHP-Code im Content aufrufe, denn auch mit deinen Korrekturen funktioniert es leider nicht. Daher mein Umweg über das direkt implementierte Javascript. Die etwas unsaubere Schreibweise musste ich wählen, da ansonsten immer wieder ein Fehler auftritt, dass eine Klammer fehlt. Soweit der letzte Stand.
Also für alle dies Interessiert, den Code oben plus das jQuery-Plug-In = eine wunderbar Slideshow, die sich optimal verändern läßt. Übrigens auch für Teaser oder News-Ticker bestens geeignet.

Nochmals Vielen Dank.

Dirk

creatin g GmbH | optimiertes Kommunikationsdesign
http://www.creatin-g.de (Website) | http://twitter.com/creatin_g (twitter)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Endlösung

Eingetragen von hermanns (90)
am 04.06.2008 - 15:34 Uhr

Endlich! Es läuft wie ich mir das vorgestellt hab. Hier der Code

<?php

drupal_add_js
('misc/jquery.innerfade.js');

$myjs = "$(document).ready( function(){
        $('#fade').innerfade({
            speed: 'slow',
            timeout: 4000, 
            type: 'sequence',
            containerheight: '332px'
        });
      });"
;
     
drupal_add_js($myjs, 'inline');

?>

Nun einfach eine Liste mit der ID "fade" versehen und die Bilder als Listenelemente laden, fertig! Das Plugin gibts hier: Link
__
Nur Kritik bringt einen weiter.

creatin g GmbH | optimiertes Kommunikationsdesign
http://www.creatin-g.de (Website) | http://twitter.com/creatin_g (twitter)

  • Anmelden oder Registrieren um Kommentare zu schreiben

drupal_get_path() und der IIS

Eingetragen von quiptime (4972)
am 12.12.2008 - 14:31 Uhr

Die Verwendung von drupal_get_path() um einen Pfad zu einem Theme abzubilden sollte man bei Problemen mit path_to_theme() ersetzen.

Ein Problem mit drupal_get_path() kann eintreten wenn die Drupalsite auf einem IIS laeuft. Der IIS hat mit dieser Funktion offensichtlich Probleme den Pfad darzustellen. Mit path_to_theme() klappt es ohne Probleme.

PS
Das IIS Problem habe ich erst vor wenigen Tagen selbst erlebt.
Nun kann es vermutlich auch an der Konfiguration des IIS liegen wenn es bei der Verwendung von drupal_get_path() Probleme gibt. Die Konfiguration des IIS habe ich nicht hinterfragt.

 
PS PS

ACHTUNG

Um Javascript Dateien einzulinken sollte man NICHT dies hier

Zitat:

<script type="text/javascript" src="<?php print drupal_get_path('theme','zen') . '/js/interface.js'; ?>"></script>

praktizieren!!!

Besser ist die Verwendung der Funktion drupal_add_js(). Damit die JS Datei in der "template.php" einlinken. Beispiel:

<?php
drupal_add_js
(path_to_theme() . '/js/interface.js', 'theme', 'footer');
?>

Der Grund fuer die Verwendung der Funktion drupal_add_js() ergibt sich hauptsaechlich dadurch das man viele Moeglichkeiten hat die Art und Weise wie die JS Datei eingelinkt wird beim Funktionsaufruf durch die verschiedenen Funktionsparameter zu steuern.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

@hermanns, ... die Art eines Script Kiddy.

Eingetragen von quiptime (4972)
am 12.12.2008 - 14:46 Uhr

@hermanns,

es funktioniert. Prima.

<?php
drupal_add_js
('misc/jquery.innerfade.js');

$myjs = "$(document).ready( function(){
        $('#fade').innerfade({
            speed: 'slow',
            timeout: 4000,
            type: 'sequence',
            containerheight: '332px'
        });
      });"
;
    
drupal_add_js($myjs, 'inline');
?>

 
Aber Schlussendlich ist die Vorgehensweise wie Du die Aufgabe gelöst hast mit der eines Script Kiddy zu vergleichen.

Wieso?

1.
Es ist keine gute Idee ein zusätzliches jQuerty Plugin in den Core-Ordner /misc zu kopieren.
Besser ist ein Ordner im Theme.

2.
Ich bin mir sehr sicher das Dein jQuery Code NICHT erfordert das er inline platziert wird.
Besser, allgemein bekannt und empfohlen ist es wann immer möglich JS Code in externe Datei zu verlagern.

3.
JS Code als Inline Code ist aus Performancegründen immer das Schlechteste was man seiner/einer Website antun kann.
Besser ist es nach Pkt. 2 vorzugehen.

Dabei sollte man prüfen ob es zwingende Gründe gibt das die JS Datei im Header gelinkt wird. Wenn dem nicht ist dann sollte man sie im Footer linken.
Das ist dann das Beste hinsichtlich Performance was man seiner/einer Website antun kann.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Schriftgröße standard einstellen
  • PHP 8.1 - Deprecated function: rtrim()
  • Drupal Website gestalten
  • MariaDB 10.6
  • Entity Reference - Title Felder werden als Link angezeigt
  • Tokens werden in Viev als Link angezeigt
  • [bug entdeckt & workaround gefunden] benutzerdefinierte Felder vom Userprofil tauchen ungefragt auch in den Forumtopics auf...
  • [gelöst] Mass contact Empfängerliste nach Taxonomy Term statt Rolle
  • Update V. 9.3.12 auf V. 9.4 mit Fehler: Modul mySQL fehlt. Bitte Hilfe.
  • Sprachpfad, in Drupal Korrekt einstellen, auch bei den Meta-Tags
  • Update von Drupal 9.3 auf 9.4 oder bei 9.3 bleiben
  • Terminverwaltung
Weiter

Neue Kommentare

  • core_version_requirement: ^8
    vor 8 Stunden 15 Minuten
  • core_version_requirement: ^8
    vor 8 Stunden 17 Minuten
  • ok. Wenn ich das mache
    vor 8 Stunden 23 Minuten
  • Bei gleichem Namen hat das
    vor 8 Stunden 56 Minuten
  • Sorry, dass ich mich hier
    vor 9 Stunden 8 Minuten
  • Habe Patch versucht
    vor 16 Stunden 6 Minuten
  • Hier wird ein Patsch
    vor 17 Stunden 56 Minuten
  • Mit Drupal geht das um 150
    vor 1 Tag 5 Stunden
  • Ah, ok. Wenn es ein Paragraph
    vor 2 Tagen 5 Stunden
  • Also kleiner Nachtrag noch:
    vor 2 Tagen 6 Stunden

Statistik

Beiträge im Forum: 247863
Registrierte User: 19588

Neue User:

  • Tkakah
  • JeraldFub
  • andycrestodina

» Alle User anzeigen

User nach Punkten sortiert:
wla9213
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3845
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 4 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association