Tutorial: Lightbox mit Fancybox

Ihr benötigt Hilfe oder habt Fragen bei der Erstellung eines eigenen Layouts oder kleinen Veränderungen am Standard Layout, dann ist dies das richtige Forum

Moderatoren: Magnus, mmaass, ablass

Tutorial: Lightbox mit Fancybox

Beitragvon bigfraggle » Mo 20. Jun 2011, 13:22

Hallo zusammen,

es gibt hier in den Tiefen des Boards zwar bereits eine Anleitung, wie man ein Lightbox-Skript in den Randshop bringt, aber weder ist jenes Skript in qualitativer Hinsicht zu empfehlen, noch passt die Anleitung zur aktuellen 1.6. Daher hier ein Tutorial, wie man Fancybox 1.3.4 in den Shop integriert:

1. Skript herunterladen: http://www.fancybox.net

2. Die Dateien aus dem entpackten Unterordner "fancybox" auf den Server laden, am besten im Randshop-Hauptverzeichnis ebenfalls in einen Ordner "fancybox".

3. In den head-Bereich der index.tpl kommt dann als erstes folgendes:

Code: Alles auswählen
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript" src="<?php echo URLPFAD ?>fancybox/jquery.fancybox-1.3.4.pack.js"></script>
<script type="text/javascript" src="<?php echo URLPFAD ?>fancybox/jquery.easing-1.3.pack.js"></script>
<script type="text/javascript" src="<?php echo URLPFAD ?>fancybox/jquery.mousewheel-3.0.4.pack.js"></script>
<link rel="stylesheet" type="text/css" href="<?php echo URLPFAD ?>fancybox/jquery.fancybox-1.3.4.css" media="screen" />

sowie:

Code: Alles auswählen
<script type="text/javascript">
$(document).ready(function() {
   $("a#bild").fancybox();
});
</script>

Möchte man nicht die Standarddarstellung, stehen diverse Funktionen zur Verfügung, mit denen man Fancybox variieren kann (weiterführende Infos: http://www.fancybox.net/api). Bei mir nutze ich z.B. anstelle des vorangegangenen Codes diesen:

Code: Alles auswählen
<script type="text/javascript">
$(document).ready(function() {
   $("a#bild").fancybox({
      'transitionIn' : 'elastic',
      'transitionOut' : 'elastic',
      'titlePosition' : 'inside',
      'overlayColor' : '#000',
      'overlayOpacity' : 0.8,
   });
});
</script>

4. Nun muss noch das Produktbild mit Fancybox verknüpft werden. Dazu bearbeitet man im Randshop-Ordner themes/kategorie die Datei detail.php. In dieser findet man ungefähr in Zeile 238

Code: Alles auswählen
$tpl_imagesmall_string = "<a href=\"javascript:openFenster('" . IMAGEPFAD . "dbimages/" . $ArtikelObject->bigImage . "','" . ($ArtikelObject->imagebig_width + 20). "','" . ($ArtikelObject->imagebig_height + 20) . "'); \">" . $ArtikelObject->imagesmall_imagestring . "</a>";

und ersetzt dies durch

Code: Alles auswählen
$tpl_imagesmall_string = "<a id=\"bild\" href=\"" . IMAGEPFAD . "dbimages/" . $ArtikelObject->bigImage . " \">" . $ArtikelObject->imagesmall_imagestring . "</a>";

Abschließend muss noch der Textlink angepasst werden. Dazu eine Zeile tiefer

Code: Alles auswählen
$tpl_imagelupe_string = "<a href=\"javascript:openFenster('" . IMAGEPFAD . "dbimages/" . $ArtikelObject->bigImage . "','" . ($ArtikelObject->imagebig_width + 20). "','" . ($ArtikelObject->imagebig_height + 20) . "');\">" . $lang_lupe . "</a>";

in

Code: Alles auswählen
$tpl_imagelupe_string = "<a id=\"bild\" href=\"" . IMAGEPFAD . "dbimages/" . $ArtikelObject->bigImage . " \">" . $lang_lupe . "</a>";

ändern. Fertig.

Viel Spaß damit! :)
Zuletzt geändert von bigfraggle am Mi 7. Sep 2011, 08:14, insgesamt 2-mal geändert.
Codedirect - Dein Shop für PSN, Xbox Live, Zune & Co.
bigfraggle
 
Beiträge: 152
Registriert: Mo 1. Nov 2010, 16:30
Wohnort: Berlin

Re: Tutorial: Lightbox mit Fancybox

Beitragvon mmaass » Mo 20. Jun 2011, 22:35

Danke für die schöne Beschreibung.
Die Fancybox wird auch in der kommenden Version ein fester Bestandteil des Shops sein.
www.randshop.com
Entwicklung - Anpassung - Support
Benutzeravatar
mmaass
Admin
 
Beiträge: 5203
Registriert: Di 24. Aug 2004, 17:44
Wohnort: Berlin

Re: Tutorial: Lightbox mit Fancybox

Beitragvon dieselross » Do 7. Jul 2011, 09:15

Hmmm. Irgendwie bekomme ich nur das Bild in einer leeren Seite. Was mach' ich falsch? Psst das Tutorial vielleicht nur für die Standard-Templates?

Edit: Stop! Alles zurück! Der beschriebene Effekt tritt nur beim Klick auf das Bild auf. Beim Klick auf den "Zoom"-Button ist alles wie erwartet.
Allerdings würde ich als Besucher heute fast erwarten, dass kleine Abbildungen beim Klick darauf in einer Lightbox gezoomt werden. Was muß ich noch ändern, um

a) den Effekt beim Klick auf das BILD zu erhalten
b) den "Zoom"-Button loszuwerden
und
c) auch bei weiteren Bildern die fancybox einzubinden?

Herzlichen Dank für die Hilfe!
life's for learning
dieselross
dieselross
 
Beiträge: 6
Registriert: Do 9. Jun 2011, 13:35

Re: Tutorial: Lightbox mit Fancybox

Beitragvon bigfraggle » Do 7. Jul 2011, 11:41

dieselross hat geschrieben:a) den Effekt beim Klick auf das BILD zu erhalten

War im Code unter Punkt 4 ein kleiner Fehler. Habs korrigiert.

dieselross hat geschrieben:b) den "Zoom"-Button loszuwerden

Textlink einfach aus dem Template nehmen.

dieselross hat geschrieben:c) auch bei weiteren Bildern die fancybox einzubinden?

Da ich bei mir jeweils nur ein Bild verwende, habe ich das jetzt nicht so parat. Ist aber grundsätzlich möglich.

Entweder weist du in der detail.php den weiteren Bildern auch die ID "bild" zu, dann kannst du jedes Bild einzeln in der Fancybox darstellen.

Du kannst aber auch eine Bildergruppe erstellen. In der o.g. zweiten Codebox unter Punkt 3 musst du dann für die Standarddarstellung sowas in der Art definieren (oder ggf. Effekte lt. der verlinkten API hinzufügen):

Code: Alles auswählen
<script type="text/javascript">
$(document).ready(function() {
   $("a[rel=gallery]").fancybox();
});
</script>

Um das Produktbild und die weiteren Bilder mit Fancybox zu verknüpfen, musst du in der detail.php den Bildern dann nicht die ID "bild" zuweisen, sondern die Verknüpfung rel "gallery".
Codedirect - Dein Shop für PSN, Xbox Live, Zune & Co.
bigfraggle
 
Beiträge: 152
Registriert: Mo 1. Nov 2010, 16:30
Wohnort: Berlin

Re: Tutorial: Lightbox mit Fancybox

Beitragvon dieselross » Do 7. Jul 2011, 18:05

Danke vielmals! Das funktioniert jetzt prima.

Zu meinem Problem mit dem Zoom-Button:
bigfraggle hat geschrieben:Textlink einfach aus dem Template nehmen.
Hmmm. So weit war ich auch schon mit meiner Überlegung. Allerdings habe ich den entsprechenden Textlink nirgends gefunden. Weißt Du so aus dem Ärmel, in welcher Datei der stehen sollte?

Edit:
Ich habe jetzt in der "themes/kategorie/detail.php"die Zeile
Code: Alles auswählen
$tpl_imagelupe_string = "<a id=\"bild\" href=\"" . IMAGEPFAD . "dbimages/" . $ArtikelObject->bigImage . " \">" . $lang_lupe . "</a>";
auskommentiert und in der "contentlayout.css" die Höhe des "div.artikelDetailBild span" auf Null gesetzt.
So geht's. ich weiß nur nicht, ob das so elegant ist.
Zuletzt geändert von dieselross am Fr 8. Jul 2011, 10:27, insgesamt 1-mal geändert.
life's for learning
dieselross
dieselross
 
Beiträge: 6
Registriert: Do 9. Jun 2011, 13:35

Re: Tutorial: Lightbox mit Fancybox

Beitragvon bigfraggle » Fr 8. Jul 2011, 09:12

website/artikel/artikeldetail.tpl

Und dort ziemlich weit oben das "<span><?=$tpl_imagelupe_string?></span>" rausnehmen.
Codedirect - Dein Shop für PSN, Xbox Live, Zune & Co.
bigfraggle
 
Beiträge: 152
Registriert: Mo 1. Nov 2010, 16:30
Wohnort: Berlin

Re: Tutorial: Lightbox mit Fancybox

Beitragvon dieselross » Fr 8. Jul 2011, 11:18

bigfraggle hat geschrieben:website/artikel/artikeldetail.tpl

Und dort ziemlich weit oben das "<span><?=$tpl_imagelupe_string?></span>" rausnehmen.

Hihi. Da haben sich unsere Postings wohl überschnitten. Herzlichen Dank für die Antwort.
Ich bin noch ziemlich neu als Randshop-User und finde mich in der Vielzahl der Dateien noch nicht so wirklich zurecht. Daher die teilweise vielleicht dummen Fragen.

Ein Problem habe ich noch: Bei der Eingabe der Kundendaten (Neukunde) sieht das Formular prima aus. Beim Login als Neukunde ist dann das Layout zerschossen.
Das Problem ist hier wohl die Kundennummer, die unformatiert daherkommt.
Hat dieses Problem noch jemand?
life's for learning
dieselross
dieselross
 
Beiträge: 6
Registriert: Do 9. Jun 2011, 13:35

Re: Tutorial: Lightbox mit Fancybox

Beitragvon bigfraggle » Sa 9. Jul 2011, 11:23

"Überschnitten" ist gut.
Ich habe um 10.12 Uhr geantwortet, du um 11.27 Uhr deinen Beitrag editiert... :D

Elegant? Nimm es lieber nur aus dem Template raus. CSS brauchst du im Grunde garnicht ändern bzw. kannst die Zeile auch komplett löschen.

Auch wenn es Off Topic ist: Das Formular sieht im Standardtemplate ganz normal aus. Also im Zweifelsfall Änderungen im Template und CSS-Angaben wieder rückgängig machen. ;)
Codedirect - Dein Shop für PSN, Xbox Live, Zune & Co.
bigfraggle
 
Beiträge: 152
Registriert: Mo 1. Nov 2010, 16:30
Wohnort: Berlin

Re: Tutorial: Lightbox mit Fancybox

Beitragvon mawa » Mi 21. Sep 2011, 09:52

hi bigfraggle,
prima tutorial, konnte es auch fehlerfrei umsetzen - leider scheitere ich an der einbindung der weiteren detailbilder - ich habe in der detail.php in der abteilung "weitere Bilder" dem array auch die rel gallery zugewiesen. jetzt geht zwar die fancybox auf, wenn ich auf die detailbilder klicke, aber es kommt die fehlermeldung, das die daten momentan nicht geladen werden können. gleiches passiert auch, wenn ich auf das hauptbild klicke und dann auf die "weiter" pfeile klicke.
hast du eine idee woran das liegt, der bildpfad ist doch auch die dbimages? oder?

beste grüße

mawa
mawa
 
Beiträge: 9
Registriert: Mi 21. Sep 2011, 09:46

Re: Tutorial: Lightbox mit Fancybox

Beitragvon bigfraggle » Do 22. Sep 2011, 14:48

Wie gesagt, ich nutze jeweils nur ein Bild und habe auch derzeit keine Testumgebung zum Ausprobieren parat.

So auf die Schnelle würde ich diesen Code in Zeile 355 ersetzen

Code: Alles auswählen
$tplBilderArray .= "<a href=\"javascript:openFenster('" . IMAGEPFAD . "dbimages/" . $ArtikelBildData["bigImage"] . "','" . ($ArtikelBildData["imagebig_width"] + 20). "','" . ($ArtikelBildData["imagebig_height"] + 20) . "');\">". $ArtikelBildData["imagesmall_imagestring"]."</a>";


und stattdessen dieses dort in die detail.php packen:

Code: Alles auswählen
$tplBilderArray .= "<a rel=\"gallery\" href=\"" . IMAGEPFAD . "dbimages/" . $ArtikelBildData["bigImage"] . "\">" . $ArtikelBildData["imagesmall_imagestring"]."</a>";
Codedirect - Dein Shop für PSN, Xbox Live, Zune & Co.
bigfraggle
 
Beiträge: 152
Registriert: Mo 1. Nov 2010, 16:30
Wohnort: Berlin


Zurück zu Designfragen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste