Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

jQuery-Slider in Drupal einbinden

Eingetragen von fryswe (63)
am 02.03.2009 - 23:29 Uhr in
  • Allgemeines zu Drupal
  • Drupal 5.x

hallo leute,

ich versuche gerade einen glider (benutzt ne glider.js, effects.js und prototype.js) auf einer drupal installation zum laufen zu kriegen. allerdings scheine ich konflikte mit jquery zu haben.

der fehler lautet

Fehler: element.dispatchEvent is not a function
Quelldatei: prototype.js
Zeile: 3972

nun wollte ich die jquery.js im noconflict-mode betreiben und habe in die jquery.js folgendes an den anfang gesetzt

var J = jQuery.noConflict();

soweit so richtig, hoffe ich.

mein glider funktioniert danach auch einwandfrei. allerdings ergebn sich laut fehlerkonsole neue fehler. und zwar:

Fehler: jQuery is not defined
Quelldatei: jquery.js
Zeile: 1

und

Fehler: $(document.documentElement).addClass is not a function
Quelldatei: drupal.js
Zeile: 205

sowie

Fehler: jQuery is not defined
Quelldatei: sites/all/modules/jquery_update/compat.js
Zeile: 6

und

Fehler: $(document).ready is not a function
Quelldatei: textarea.js
Zeile: 35

wo liegt das problem? verwenden hier einige scripte/plugins per se einfach das $ und die muss ich jetzt per hand nachtragen? (das wurde mir in einem anderen forum empfohlen). wenn ja, wie sieht das dann aus? was muss durch was genau ersetzt werden?

oder was könnte des rätsels lösung sein, um die 4 zuletzt genannten fehler noch auszumerzen und meinen glider dabei funktionsfähig zu erhalten?

danke im voraus,
sebastian

‹ tagadelic tags mit title attributen versehen RSS Feeds und max. 16 Wochen? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

willst du nicht einfach auf

Eingetragen von dawehner (2639)
am 02.03.2009 - 23:56 Uhr

willst du nicht einfach auf prototype verzichten?

Denn es ist einfach nicht sinnvoll 2 Javascriptbibliotheken zu laden, aber nur eine zu benutzen
und für jquery gibts eine unmenge an Plugins...
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.deXING

  • Anmelden oder Registrieren um Kommentare zu schreiben

auf die idee, einen slider

Eingetragen von fryswe (63)
am 03.03.2009 - 00:03 Uhr

auf die idee, einen slider auf jquery-basis zu verwenden, bin ich noch gar nicht gekommen. das werde ich selbstverständlich gleich mal tun. sicher dienlicher, als mich mit dem prototype-jquery-konflikt rumzuschlagen.

besten dank für den anstoß!

  • Anmelden oder Registrieren um Kommentare zu schreiben

ich versuche jetzt einen

Eingetragen von fryswe (63)
am 03.03.2009 - 13:50 Uhr

ich versuche jetzt einen jquery slider zu benutzen. der nutzt die "slider.js" und die "jquery.js", die beide im selben verzeichnis liegen.

der slider wird aufgerufen per:

<script type="text/javascript">
$(document).ready(function(){
$("#slider").eSlider();
});
</script>

allerdings erhalte ich wieder

Fehler: jQuery is not defined
Quelldatei: localhost/slider.js
Zeile: 94

Zeile 94 ist die letzte zeile des scripts und lautet

})(jQuery);

Ich habe nun auch schon probiert das $ durch ein jQuery zu ersetzen und die function in der slider.js von $ auch in jQuery geändert. bringt aber den gleichen fehler.

was mache ich hier denn noch falsch?

  • Anmelden oder Registrieren um Kommentare zu schreiben

hat keiner eine idee, wieso

Eingetragen von fryswe (63)
am 05.03.2009 - 09:27 Uhr

hat keiner eine idee, wieso ich trotz jquery den genannten fehler habe?

wenn ich das script alleinstehen ausführe, funktioniert es. eben nur nicht, sobald ich es in drupal einbinden!

  • Anmelden oder Registrieren um Kommentare zu schreiben

nachdem ich jetzt hier ein

Eingetragen von fryswe (63)
am 05.03.2009 - 10:23 Uhr

nachdem ich jetzt hier ein paar threads durchforstet habe, habe ich meinen slider wiefolgt eingebunden:

<?php
drupal_add_js
('/xxx/sites/all/modules/slideshow/easySlider.packed.js');

$slideshow = " $(document).ready(function(){    $('#slider').easySlider();}); ";
drupal_add_js($slideshow, 'inline');
           
drupal_add_css('/xxx/sites/all/modules/slideshow/slider.css');
?>

dadurch packt er jetzt folgendes in den footer:

<script type="text/javascript" src="/xxx/sites/all/modules/slideshow/easySlider.packed.js"></script>
<script type="text/javascript"> $(document).ready(function(){ $('#slider').easySlider();}); </script>

funktioniert :D

  • Anmelden oder Registrieren um Kommentare zu schreiben

drupal_add_js

Eingetragen von stBorchert (6003)
am 05.03.2009 - 10:36 Uhr

Moin!
:-) Und jetzt wollte ich gerade nachfragen, ob die jquery.js überhaupt geladen wird.
Aber Du hast es ja schon hinbekommen.

Noch ein Tipp: drupal_get_path() verwenden.

<?php
drupal_add_js
(drupal_get_path('module', 'slideshow') .'/easySlider.packed.js');
$slideshow = "$(document).ready(function() { $('#slider').easySlider(); });";
drupal_add_js($slideshow, 'inline');
drupal_add_css(drupal_get_path('module', 'slideshow') .'/slider.css');
?>

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hey! Danke :) habe ich noch

Eingetragen von fryswe (63)
am 05.03.2009 - 11:03 Uhr

Hey! Danke :) habe ich noch eingebaut.

Ich weiß nicht, ob Du mir weiterführend hier noch helfen kannst.

Der Slider funktioniert mit zwei Textbuttons, die automatisch durch das Script eingefügt werden. Ich möchte jedoch gerne zwei Pfeile (Grafiken) einbinden. Laut der Seite vom Autor des Scriptes (http://cssglobe.com/post/3783/jquery-plugin-easy-image-or-content-slider) kann man dies mit

<span id="prevId"><a href="javascript:void(0);">Grafik oder Text</a></span>
<span id="nextBtn"><a href="javascript:void(0);">Grafik oder Text</a></span>

tun. Funktioniert aber leider nicht. Bei Klick auf meine Grafik hier passiert rein gar nichts.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Beispiel

Eingetragen von stBorchert (6003)
am 05.03.2009 - 11:37 Uhr

Moin!
Hast Du Dir mal http://templatica.com/ angeschaut? Dort hat er da ja auch mit Bildern als "prev"/"next" gelöst.
Möglicherweise siehst Du im Firebug auch irgendwelche Javascript-Fehler?

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

jo gute idee, thx. habs

Eingetragen von fryswe (63)
am 05.03.2009 - 13:56 Uhr

jo gute idee, thx. habs jetzt auch hinbekommen :)

Danke, Seb

  • Anmelden oder Registrieren um Kommentare zu schreiben

@ Stefan, bist du in JS

Eingetragen von fryswe (63)
am 05.03.2009 - 16:27 Uhr

@ Stefan, bist du in JS etwas fit? Ich versuche gerade einen dritten Button hinzufügen (neben dem Next und Prev Button), mit dem die Tour gestartet werden kann. Dupliziere ich den Next Button einfach, dann geht einer der beiden nicht mehr. Darum würde ich gerne noch einen dritten button hinzufügen.

Das ist das Sctipt

(function($) {

$.fn.easySlider = function(options){
 
// default configuration properties
var defaults = {
prevId: 'prevBtn',
prevText: '<img src="/xxx/files/slider/benutzertour-links.gif" alt="Zurück">',
nextId: 'nextBtn',
nextText: '<img src="/xxx/files/slider/benutzertour-rechts.gif" alt="Vorwärts">',
orientation: '', //  'vertical' is optional;
speed: 800
};

var options = $.extend(defaults, options); 

return this.each(function() { 
obj = $(this);
var s = $("li", obj).length;
var w = obj.width();
var h = obj.height();
var ts = s-1;
var t = 0;
var vertical = (options.orientation == 'vertical');
$("ul", obj).css('width',s*w);
if(!vertical) $("li", obj).css('float','left');
//$(obj).after('<span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span> <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>');

$("a","#"+options.prevId).hide();
$("a","#"+options.nextId).hide();
$("a","#"+options.nextId).click(function(){
animate("next");
if (t>=ts) $(this).fadeOut();
$("a","#"+options.prevId).fadeIn();
});
$("a","#"+options.prevId).click(function(){
animate("prev");
if (t<=0) $(this).fadeOut();
$("a","#"+options.nextId).fadeIn();
});
function animate(dir){
if(dir == "next"){
t = (t>=ts) ? ts : t+1;
} else {
t = (t<=0) ? 0 : t-1;
};
if(!vertical) {
p = (t*w*-1);
$("ul",obj).animate(
{ marginLeft: p },
options.speed
);
} else {
p = (t*h*-1);
$("ul",obj).animate(
{ marginTop: p },
options.speed
);
}
};
if(s>1) $("a","#"+options.nextId).fadeIn();
});
 
};

})(jQuery);

  • Anmelden oder Registrieren um Kommentare zu schreiben

js

Eingetragen von stBorchert (6003)
am 05.03.2009 - 20:47 Uhr

Was genau meinst Du mit "Tour starten"? Das automatisch alle x Sekunden auf das nächste Bild gesprungen wird?
So wie der Code aussieht, ist das dort gar nicht vorgesehen.
Du könntest allerdings einen Timeout setzen, der dann die next() Funktion aufruft.

var hTimer;
$(function() {
  startTour();
});

function startTour() {
  hTimer = window.setTimeout(function() {
    if ($('#next').attr('display') == 'none') { // ID evtl. anpassen.
      // Timeout entfernen, wenn das letzte Element angezeigt wird.
      window.clearTimeout(hTimer);
      hTimer = null;
      return;
    }
    $.fn.easySlider.animate('next');
  }, 2000); // alle 2 Sekunden
}

Das kann so funktionieren, muss aber nicht (ist auch ungetestet).

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

danke schon mal für deine

Eingetragen von fryswe (63)
am 05.03.2009 - 22:15 Uhr

danke schon mal für deine antwort, hier erst noch mal übersichtshalber der eingerückte code

<?php


(function($) {

    $.
fn.easySlider = function(options){
     
       
// default configuration properties
       
var defaults = {
           
prevId:         'prevBtn',
           
prevText:         '<img src="/xxx/files/slider/benutzertour-links.gif" alt="Züricl">',
           
nextId:         'nextBtn',   
           
nextText:         '<img src="/xxx/files/slider/benutzertour-rechts.gif" alt="Vorwärts">',
           
orientation:    '', //  'vertical' is optional;
           
speed:             800           
       
};
       
        var
options = $.extend(defaults, options); 
       
        return
this.each(function() { 
           
obj = $(this);                
            var
s = $("li", obj).length;
            var
w = obj.width();
            var
h = obj.height();
            var
ts = s-1;
            var
t = 0;
            var
vertical = (options.orientation == 'vertical');
            $(
"ul", obj).css('width',s*w);           
            if(!
vertical) $("li", obj).css('float','left');
           
//$(obj).after('<span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span> <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>');       

           
$("a","#"+options.prevId).hide();
            $(
"a","#"+options.nextId).hide();
            $(
"a","#"+options.nextId).click(function(){       
               
animate("next");
                if (
t>=ts) $(this).fadeOut();
                $(
"a","#"+options.prevId).fadeIn();
            });
            $(
"a","#"+options.prevId).click(function(){       
               
animate("prev");
                if (
t<=0) $(this).fadeOut();
                $(
"a","#"+options.nextId).fadeIn();
            });   
            function
animate(dir){
                if(
dir == "next"){
                   
t = (t>=ts) ? ts : t+1;   
                } else {
                   
t = (t<=0) ? 0 : t-1;
                };                               
                if(!
vertical) {
                   
p = (t*w*-1);
                    $(
"ul",obj).animate(
                        {
marginLeft: p },
                       
options.speed
                   
);               
                } else {
                   
p = (t*h*-1);
                    $(
"ul",obj).animate(
                        {
marginTop: p },
                       
options.speed
                   
);                   
                }
            };
            if(
s>1) $("a","#"+options.nextId).fadeIn();   
        });
     
    };

})(
jQuery);

?>

Ich meine eigentl. etwas anderes: Im Script werden ja zwei Buttons initialisiert, prev und next. und ich möchte aber einen weiteren button in die slideshow einbinden und zwar parallel zum next button einen "start slideshow" button, der nur im ersten frame zu sehen ist. den next button dafür einfach zu duplizieren ging wie gesagt nicht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Keiner eine Idee?

Eingetragen von fryswe (63)
am 07.03.2009 - 10:37 Uhr

Keiner eine Idee?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 1 Tag
  • Hey danke
    vor 2 Wochen 2 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 3 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 12 Stunden
  • Da scheint die Terminologie
    vor 3 Wochen 15 Stunden
  • Kannst doch auch alles direkt
    vor 3 Wochen 4 Tagen
  • In der entsprechenden View
    vor 3 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 4 Tagen
  • gelöst
    vor 6 Wochen 1 Tag
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 29 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