Lytebox-Slideshow !Beta! --offene Fragen

Gesperrt
Azibi
Beiträge: 13
Registriert: Di 23. Mär 2004, 19:19
Kontaktdaten:

Lytebox-Slideshow !Beta! --offene Fragen

Beitrag von Azibi » Di 26. Jun 2007, 01:02

Hallo,
endlich habe ich auch mein erstes Modul geschieben und stelle es euch zur Verfügung. Leider habe ich nicht die grosse Ahnung von php, deshalb habe ich mir hier und da ein paar Codezeilen zusammengeklaut.
Wie komme ich nun dazu ein eigenes Modul zu schreiben... Eigentlich wollte ich die Lightbox Galerie nutzen, daran störte mich aber das ich nur die in der Galerie angezeigten Bilder in der Lightbox durchzappen kann. Ich möchte aber nur ein Bild anzeigen.
Auf meiner Suche bin ich dann auf die Lytebox gestoßen die z.B. bei kleinerem Code auch noch eine Slideshow generiert.

Da kommen wir auch schon zu meinem ersten Problem. Um die Slide effektiv nutzen zu können muss der Link zur ersten Datei im Verzeichnis zeigen. Ich weiß aber nicht wie? Mein Link zeigt immer auf die Letzte und da ist Slideshow beendet... Seht selbst:

Input

Code: Alles auswählen

?><?php

#Selected img directory
$cms_dirname = "CMS_VALUE[2]";
#Selected img
$cms_filename = "CMS_VALUE[3]";

if ($cms_dirname == '' || $cms_dirname == '0') {
	$cms_dirname = 'bilder/';
}


#Get paths
$sql = "SELECT
	htmlpath, frontendpath
	FROM
	".$cfg["tab"]["clients"]." 
	WHERE
	idclient = ".$client." ";

$db->query($sql);

if ($db->next_record()) {
	$htmlpath = $db->f('htmlpath');
	$frontendpath = $db->f('frontendpath');
}

echo '<table>
  <tr>
    <td>' . mi18n("Breite") . '</td>
    <td><input type="text" name="CMS_VAR[0]" value="CMS_VALUE[0]"></td>
  </tr>
  <tr>
    <td>' . mi18n("Höhe") . '</td>
    <td><input type="text" name="CMS_VAR[1]" value="CMS_VALUE[1]"></td>
  </tr>
</table>';
$img_width = "CMS_VALUE[0]";
$img_height = "CMS_VALUE[1]";
#Choose image folder
echo '<table cellpadding="0" cellspacing="0" border="0">
	<tr><td class="text_medium" style="padding:5px">'.mi18n("Bildverzeichnis wählen").': </td></tr>
	<tr><td class="text_medium" style="padding:5px">';
echo '<select name="CMS_VAR[2]" style="width:200px">';

#Get upload directories
$sql = "SELECT DISTINCT
	dirname
	FROM
	".$cfg["tab"]["upl"]."
	WHERE
	idclient='$client' AND
	filetype IN ('jpeg','jpg','gif','png')
	ORDER BY
	dirname";

$db->query($sql);

$selected = false;
while ($db->next_record()) {
	$dirname = $db->f('dirname');
	if ($cms_dirname != $dirname) {
		echo '<option value="'.$dirname.'">&nbsp;'.$dirname.'</option>';
	} else {
		$selected = true;
		echo '<option value="'.$dirname.'" selected="selected">&nbsp;'.$dirname.'</option>';
	}
}

if (!$selected) {
	echo '<option value="0" selected="selected">'.i18n("Bitte wählen").'</option>';
} else {
	echo '<option value="0">'.i18n("Bitte wählen").'</option>';
}

#Choose image file
echo '</select>&nbsp;<input type="image" src="images/submit.gif">
	<tr><td class="text_medium" style="padding:5px">'.mi18n("Bild wählen").': </td></tr>
	<tr><td class="text_medium" style="padding:5px">';
echo '<select name="CMS_VAR[3]" style="width:200px">';
echo '<option value="0" selected="selected">'.i18n("Bitte wählen").'</option>';

if ($cms_dirname != '0') {
	#Get uploaded files
	$sql = "SELECT 
			filename
			FROM
			".$cfg["tab"]["upl"]."
			WHERE
			idclient = '$client' AND
			filetype IN ('jpeg','jpg','gif','png','swf') AND
			dirname = '$cms_dirname' 
			ORDER BY
			filename";

	$db->query($sql);

	while ($db->next_record()) {
		$img_name = $db->f('filename');
		if ($cms_filename != $img_name) {
			echo '<option value="'.$img_name.'">&nbsp;'.$img_name.'</option>';
		} else {
			echo '<option selected="selected" value="'.$img_name.'">&nbsp;'.$img_name.'</option>';
		}
	}
}

echo '</select>&nbsp;<input type="image" src="images/submit.gif">';

$img_path_fs = $frontendpath.$cfgClient[$client]['upload'].$cms_dirname.$cms_filename;

#Preview image
if ($cms_dirname != '0' AND $cms_filename != '0' AND strlen($cms_dirname) > 0 AND strlen($cms_filename) > 0) {
	$img_path = $htmlpath.$cfgClient[$client]['upload'].$cms_dirname.$cms_filename;
	$img_split = preg_split("/\./", $cms_filename);
	$count = count($img_split);
	$type = $img_split[$count -1];
	$image = capiImgScale($img_path_fs, $img_width, $img_height, false, false, 10, false);
	echo '<tr><td colspan="2" style="padding:5px">		
				<img src="'.$image.'">
			</td></tr> ';
}

echo '</td></tr>';
echo '</table>';
?><?php 
Output

Code: Alles auswählen

<?php

#Maße
$img_width = "CMS_VALUE[0]";
$img_height = "CMS_VALUE[1]";
if ($img_width == 0) {
  $img_width = 200;
}
if ($img_height == 0) {
  $img_height = 200;
}

#Bildverzeichnis
$cms_dirname = "CMS_VALUE[2]";
#Angezeigtes Bild
$cms_filename = "CMS_VALUE[3]";

$defaultImage = 'images/blank.gif';

$htmlpath = $cfgClient[$client]['path']['htmlpath'];
$frontendpath = $cfgClient[$client]['path']['frontend'];

$img_path = $htmlpath.$cfgClient[$client]['upload'].$defaultImage;
$img_path_fs = $frontendpath.$cfgClient[$client]['upload'].$defaultImage;

#keine Ahnung was das macht
if ($cms_dirname != '0' AND $cms_filename != '0' AND strlen($cms_dirname) > 0 AND strlen($cms_filename) > 0) {
	$img_path = $htmlpath.$cfgClient[$client]['upload'].$cms_dirname.$cms_filename;
	$img_path_fs = $frontendpath.$cfgClient[$client]['upload'].$cms_dirname.$cms_filename;

	$img_split = preg_split("/\./", $cms_filename);
	$count = count($img_split);
	$type = $img_split[$count -1];

	if (!file_exists($img_path_fs)) {
		$img_path = $htmlpath.$cfgClient[$client]['upload'].$defaultImage;
		$img_path_fs = $frontendpath.$cfgClient[$client]['upload'].$defaultImage;
	}
}

#Bild skalieren
$image = capiImgScale($img_path_fs, $img_width, $img_height, false, false, 10, false);
$bilderpfad = $cfgClient[$client]['upload'].$cms_dirname;

list ($width, $height, $type, $attr) = getimagesize(str_replace($cfgClient[$client]["path"]["htmlpath"], $cfgClient[$client]["path"]["frontend"], $image));

#Bildverzeichnis öffnen
$handle=opendir ($bilderpfad);
#Bilder in ein verstecktes <div> laden
echo "<div style=\"visibility: hidden; top: -1000px; width: 1px; z-index: -1;\">";
while ($file = readdir ($handle)) {
	if ($file != "." && $file != "..") {
		$bildpfad = $cfgClient[$client]['upload'].$cms_dirname.$file;
		echo "<a href=\"$bildpfad\" rel=\"lyteshow\" title=\"\"></a>";
	}
}
echo "</div>";

#Thumbnail ausgeben
echo "<a href=\"$bildpfad\" rel=\"lyteshow\" title=\"\"><img src=\"$image\" width=\"$width\" height=\"$height\" alt=\"\" title=\"\" border=\"0\" /></a>";
#Bildverzeichnis schliessen
closedir($handle);
?>
Eventuell müsste da noch die eine oder andere Verbessung am Code vorgenommen werden :( Eine Sache hätte ich da noch, aber dazu später mehr (Stichwort: description 8) )

Da es bis jetzt nur local bei mir läuft kann ich noch keinen Link präsentieren, sorry

Könnt ihr mir helfen?


Gruß Azibi

miertschink_st
Beiträge: 54
Registriert: Mi 19. Apr 2006, 19:00
Kontaktdaten:

Beitrag von miertschink_st » Di 26. Jun 2007, 07:55

Das ist die Stelle, die dafür sorgt, dass dein link immer auf die letzte Datei zeigt:

Code: Alles auswählen

#Bildverzeichnis öffnen
$handle=opendir ($bilderpfad);
#Bilder in ein verstecktes <div> laden
echo "<div style=\"visibility: hidden; top: -1000px; width: 1px; z-index: -1;\">";
while ($file = readdir ($handle)) {
   if ($file != "." && $file != "..") {
      $bildpfad = $cfgClient[$client]['upload'].$cms_dirname.$file;
      echo "<a href=\"$bildpfad\" rel=\"lyteshow\" title=\"\"></a>";
   }
}
echo "</div>"; 
Schließlich nutzt du als Link wieder die Variable bildpfad.
Schreib doch statt:

Code: Alles auswählen

#Thumbnail ausgeben
echo "<a href=\"$bildpfad\" rel=\"lyteshow\" title=\"\"><img src=\"$image\" width=\"$width\" height=\"$height\" alt=\"\" title=\"\" border=\"0\" /></a>";
einfach mal das gleiche nur mit href=\"$image\"
Ohne das jetzt getestet zu haben, denke ich dass das helfen könnt

Azibi
Beiträge: 13
Registriert: Di 23. Mär 2004, 19:19
Kontaktdaten:

Beitrag von Azibi » Di 26. Jun 2007, 14:08

Hi.

Leider ist es nicht ganz so einfach. $image ist ja das/der Bild/Link von dem Thumbnail und das liegt nunmal in ../cache.


Gruß Azibi

miertschink_st
Beiträge: 54
Registriert: Mi 19. Apr 2006, 19:00
Kontaktdaten:

Beitrag von miertschink_st » Di 26. Jun 2007, 16:02

Achja, hatte ich übersehen.

Kannst du nicht einfach die Variable $image_path_fs als Link nehmen?
-> versuchs mal

Ansonsten kannst du dir auch ne Variable in die while-Schleife bauen, die nur gesetzt wird, wenn die Schleife das erste mal durchlaufen wird und die dann als Link nehmen.

So hier z.B.

Code: Alles auswählen

#Bildverzeichnis öffnen
$handle=opendir ($bilderpfad);
#Bilder in ein verstecktes <div> laden
echo "<div style=\"visibility: hidden; top: -1000px; width: 1px; z-index: -1;\">";

$first_run = 1;

while ($file = readdir ($handle)) {
   if ($file != "." && $file != "..") {
      $bildpfad = $cfgClient[$client]['upload'].$cms_dirname.$file;

if ($first_run == 1)
{$first_image = $bildpfad;}
$first_run++;

      echo "<a href=\"$bildpfad\" rel=\"lyteshow\" title=\"\"></a>";
   }
}
echo "</div>"; 

#Thumbnail ausgeben
echo "<a href=\"$first_image\" rel=\"lyteshow\" title=\"\"><img src=\"$image\" width=\"$width\" height=\"$height\" alt=\"\" title=\"\" border=\"0\" /></a>"; 

Azibi
Beiträge: 13
Registriert: Di 23. Mär 2004, 19:19
Kontaktdaten:

Beitrag von Azibi » Di 26. Jun 2007, 18:56

Danke für deine Mühen. Bin die letzten Stunden mit dem Kopf gegen die Wand gelaufen und habe dabei eine Lösung gefunden :lol:

miertschink_st
Beiträge: 54
Registriert: Mi 19. Apr 2006, 19:00
Kontaktdaten:

Beitrag von miertschink_st » Di 26. Jun 2007, 20:36

und die wäre?

Azibi
Beiträge: 13
Registriert: Di 23. Mär 2004, 19:19
Kontaktdaten:

Beitrag von Azibi » Di 26. Jun 2007, 22:15

Ich hab mich mal mit der Datenbank beschäftigt

Hoffentlich ist es nicht zu unübersichtlich :oops:

Code: Alles auswählen

<?php
#Masse
$img_width = "CMS_VALUE[0]";
$img_height = "CMS_VALUE[1]";
if ($img_width == 0) {
  $img_width = 150;
}
if ($img_height == 0) {
  $img_height = 150;
}
#Bildverzeichnis
$cms_dirname = "CMS_VALUE[2]";

#Angezeigtes Bild
$cms_filename = "CMS_VALUE[3]";

$defaultImage = 'images/blank.gif';
$htmlpath = $cfgClient[$client]['path']['htmlpath'];
$frontendpath = $cfgClient[$client]['path']['frontend'];
$img_path = $htmlpath.$cfgClient[$client]['upload'].$defaultImage;
$img_path_fs = $frontendpath.$cfgClient[$client]['upload'].$defaultImage;

#keine Ahnung was das macht
if ($cms_dirname != '0' AND $cms_filename != '0' AND strlen($cms_dirname) > 0 AND strlen($cms_filename) > 0) {
	$img_path = $htmlpath.$cfgClient[$client]['upload'].$cms_dirname.$cms_filename;
	$img_path_fs = $frontendpath.$cfgClient[$client]['upload'].$cms_dirname.$cms_filename;
	$img_split = preg_split("/\./", $cms_filename);
	$count = count($img_split);
	$type = $img_split[$count -1];
	if (!file_exists($img_path_fs)) {
		$img_path = $htmlpath.$cfgClient[$client]['upload'].$defaultImage;
		$img_path_fs = $frontendpath.$cfgClient[$client]['upload'].$defaultImage;
	}
}

#Bild skalieren
$image = capiImgScale($img_path_fs, $img_width, $img_height, false, false, 10, false);

$bilderpfad = $cfgClient[$client]['upload'].$cms_dirname;

list ($width, $height, $type, $attr) = getimagesize(str_replace($cfgClient[$client]["path"]["htmlpath"], $cfgClient[$client]["path"]["frontend"], $image));

$sql = "SELECT 
		filename, description
		FROM
		".$cfg["tab"]["upl"]."
		WHERE
		idclient = '$client' AND
		filetype IN ('jpeg','jpg','gif','png','swf') AND
		dirname = '$cms_dirname' 
		ORDER BY
		filename";
$db->query($sql);
$zeiger = 1;

while ($db->next_record()) {
	$img_name = $db->f('filename');
	$img_desc = $db->f('description');
	$link = $cfgClient[$client]['upload'].$cms_dirname.$img_name;
	if($zeiger!=1){		
		echo "<a href=\"$link\" rel=\"lyteshow\" title=\"$img_desc\"></a>";
	}else{
		echo "<a href=\"$link\" rel=\"lyteshow\" title=\"$img_desc\" border=\"0\"><img src=\"$image\" alt=\"Hier klicken, um weitere Bilder zu sehen\" width=\"$width\" height=\"$height\" border=\"0\" /></a>";
	}
$zeiger++;
}
?>

Gesperrt