mpNivoSlider: Nivo Slider Image-Gallery Modul

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: mpNivoSlider: Nivo Slider Image-Gallery Modul

Beitrag von xmurrix » Di 21. Jan 2014, 21:58

prepress89 hat geschrieben:..Gibts doch nicht.. :(
Da stimme ich dir zu...

Das Problem bei dir ist folgendes:

Im Script jquery.nivo.slider.pack.js wird am Ende folgende Zeile ausgeführt:

Code: Alles auswählen

var j = jQuery.noConflict();
Das sorgt dafür, dass die globale jQuery Variable $ nicht verfügbar ist und die jQuery Instanz, in j gespeichert wird, ähnlich wie beim Beispiel von mir.
Nun, diese Zeile ist in keiner Version des mpNivoSlider Moduls vorhanden. Daher frage ich mich woher kommt das, und wer hat das gemacht?

Entferne die Zeile und gut ist es...

Und den Rest brauchst du auch nicht, also die Änderungen, die ich hier beschrieben habe.
Die folgende Zeile kannst du entfernen:

Code: Alles auswählen

  var jqFrontend = jQuery.noConflict();
Dann im mpNivoSlider Modultemplate kannst du folgendes verwenden:

Code: Alles auswählen

    (function($) {
        $(function() {
            $('.mpNivoSlider_{MODULE.UID}').nivoSlider({NIVO.OPTIONS});
        });
    })(jQuery);
Dann öffne die Datei label-inside.js und ändere den Inhalt in:

Code: Alles auswählen

(function($){
    var $inputControl = $(".labelinside>input, .labelinside>textarea");

    $inputControl.each(function (index, domElement)
    {
      /*@cc_on if (document.documentMode && document.documentMode >= 8) @*/
      if ($(this).parent().css("display") == "inline")
        $(this).parent().css("display", "inline-block");

      if (!$(this).val())
        $(this).parent().children("label").show();
    });

    $inputControl.bind("focus", function(event)
    {
      $(this).parent().children("label").hide();
    });

    $inputControl.bind("blur", function(event)
    {
      if (!$(this).val())
        $(this).parent().children("label").show();
    });
    var $autofocus = $inputControl.filter("[autofocus]");  // oder Selektion per ID

    $autofocus.focus();  // setzt den Fokus auch in Browsern, die @autofocus noch nicht interpretieren

    if (!$autofocus.val())
      /*@cc_on setTimeout(function () { @*/
      $autofocus.parent().children("label").show();
      /*@cc_on }, 0); @*/

    $autofocus.bind("click", function(event)
    {
      $(this).parent().children("label").hide();
    });

    $autofocus.bind("keyup", function(event)
    {
      $(this).parent().children("label").hide();
    });
})(jQuery);
So ist es besser...

Sehr wahrscheinlich wird dann das JavaScript im Backend nicht wie gewünscht funktionieren, also das Editieren der Artikel, da hier auch im Backend ein eigenes jQuery geladen wird. Willst du das Problem lösen, dann brauchst du wieder die Zeile

Code: Alles auswählen

  var jqFrontend = jQuery.noConflict();
Danach musst du dafür sorgen, dass jeder JavaScript Code, das im Frontend jQuery verwendet, von einer sich selbst ausführenden anonymen Funktion umschlossen wird, also

Code: Alles auswählen

(function($){
    // ... hier der JavaScript code ...
})(jqFrontend);
Das Problem hättest du auch lösen können, wenn du eine andere jQuery vor dem label-inside.js geladen hättest. Ich habe das so verstanden, dass es da Probleme gibt, das sich der mpNivoSlider und Label-Inside nicht mit einer jQuery Version vertragen und du daher zwei verschiedene jQuery Versionen brauchst.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

prepress89
Beiträge: 91
Registriert: Mi 8. Jul 2009, 09:18
Kontaktdaten:

Re: mpNivoSlider: Nivo Slider Image-Gallery Modul

Beitrag von prepress89 » Mi 22. Jan 2014, 10:17

Danke! Geht wieder! Das mit dem Backend ist mir nicht so wichtig, die letzten beiden Codeschnipsel von dir habe ich jetzt nicht übernommen.

Allerdings geht die Slimbox-Galerie via mootools nicht mehr. Das war eben der Grund weshalb ich in den jquery.nivo.slider.pack.js dieses noConflict eingebaut hatte. Danach ging die wieder. Kann sein dass ab genau dem Punkt dann die label-inside.js nicht mehr ging.. Allerdings kenne ich mich da zu wenig aus und habe einfach das noConflict einer Beispielseite kopiert und war froh dass danach die Galerie und der Slider zusammen wieder gingen..

Wie bekomme ich dieses letzte Problem noch hin?

http://www.sportkreis-hohenlohe.de/cms/ ... 5&idart=28

Gruß Alex


//Update:
Konnte es nun doch selbst lösen. :) Habe doch den zweiten Step deines letzten Postes befolgt und wieder im head-Bereich das noConflict eingebaut und den label-inside-Script mit der anonymen selbstauslösenden Funktion umschlossen. Nun geht auch die mit mootools betriebene Galerie.

Großes Danke für die super ausführliche Hilfe !! 8)

Gesperrt