ich versuche gerade die von Klövekorn http://www.contenido.de/forum/viewtopic ... b44fc16ea1 mit einer "vor" und "zurück"-Navigation versehene Standardbildergalerie umzubauen.
Ich möchte erreichen, dass beim Anklicken der Galerieseite direkt die vergrößerte Ansicht (also die gallery_detail.html) angezeigt wird, die Thumbnailansicht soll also übersprungen werden.
Ich habe alles, was mit der Thumbnailansicht zu tun hat, aus dem Modul entfernt. Beim Anklicken der Galerieseite lande ich nun auch tatsächlich auf der gallery_detail.htm. Zwar ist hier die "vor" und "zurück"-Navigation zu sehen, aber leider wird das erste Bild der Galerie nicht angezeigt.
Wenn ich auf die Bildnavigation klicke wird das nächste bzw. das vorherige Bild korrekt angezeigt. Klicke ich auf den link für das nächste Bild und dann zurück auf das vorherige Bild wird schließlich auch das erste Bild der Galerie angezeigt.
Warum wird das erste Bild der Galerie nicht beim Aufrufen der Galerieseite angezeigt?
Ich poste jetzt der Vollständigkeit halber mal den ganzen code (Input + Output + gallery_detail.html)...
gallery_detail.html
Code: Alles auswählen
<div id="galeriebild">
<img src="{IMG}" alt="" /><br />
<p>
{DESCRIPTION}
</p>
<!--<p><a href="{DOWNLOAD_LINK}" target="_blank" title="">{DOWNLOAD_CAPTION}</a> ({DOWNLOAD_SIZE})</p>-->
<p>
<a href="{BACKLINK}">{BACKCAPTION}</a>
<a href="{VORHERIGES}">{ZURUECK}</a>
<a href="{NAECHSTES}">{WEITER}</a>
</p>
</div>
Input
Code: Alles auswählen
?><?php
/***********************************************
* Bildergalerie Input
*
* Author : Timo A. Hummel
* Copyright : four for business AG
* Created : 30-09-2005
* modified : 21.02.2006 Klövekorn (zeilen/Spalten-Eingabe auskommentiert)
*modified: 15.01.2008 muddy (thumbcode gelöscht)
* modified: 18.01.2008 (zuviel gelöschter code von miertschink_st wieder eingefügt!)
************************************************/?>
<table>
<tr>
<td><?php echo mi18n("Breite");?></td>
<td><input type="text" name="<?php echo "CMS_VAR[0]"; ?>" value="<?php echo "CMS_VALUE[0]"; ?>"></td>
</tr>
<tr>
<td><?php echo mi18n("Höhe");?></td>
<td><input type="text" name="<?php echo "CMS_VAR[1]"; ?>" value="<?php echo "CMS_VALUE[1]"; ?>"></td>
</tr>
<!--
<tr>
<td><?php echo mi18n("Spalten");?></td>
<td><input type="text" name="<?php echo "CMS_VAR[2]"; ?>" value="<?php echo "CMS_VALUE[2]"; ?>"></td>
</tr>
<tr>
<td><?php echo mi18n("Zeilen");?></td>
<td><input type="text" name="<?php echo "CMS_VAR[3]"; ?>" value="<?php echo "CMS_VALUE[3]"; ?>"></td>
</tr>
-->
<tr>
<td><?php echo mi18n("Breite Detailansicht");?></td>
<td><input type="text" name="<?php echo "CMS_VAR[4]"; ?>" value="<?php echo "CMS_VALUE[4]"; ?>"></td>
</tr>
<?php
$sql = "SELECT DISTINCT dirname FROM ".$cfg['tab']['upl']." ORDER BY dirname";
$db->query($sql);
echo '<tr><td>'.mi18n("Verzeichnis auswählen").'</td><td>
<select name="CMS_VAR[5]" size="1" style="width: 320px">
<option value="">'.mi18n("Nichts ausgewählt").'</option>';
while ($db->next_record()) {
if ( stristr($db->f("dirname"),'CVS/') === FALSE ) {
if ($db->f("dirname")=="CMS_VALUE[5]") {
echo '<option value="'.$db->f("dirname").'" selected="selected">'.$db->f("dirname").'</option>';
} else {
echo '<option value="'.$db->f("dirname").'">'.$db->f("dirname").'</option>';
}
}
}
echo '</select></td></tr>';?>
</table>
<?php
Code: Alles auswählen
<?php
/***********************************************
* Bildergalerie Output mit Vor/Zurück
*
* Author : Timo A. Hummel
* Copyright : four for business AG
* Created : 30-09-2005
* modified : 19.02.2006 Klövekorn (vor und zurück in der Bilderansicht)
************************************************/
cInclude("includes", "functions.api.images.php");
/* Gallery variables */
$bRecursive = false;
$sPath = "CMS_VALUE[5]";
if ($sPath=='') {
$sPath = $cfgClient[$client]["path"]["frontend"] . $cfgClient[$client]["upl"]["frontendpath"] . "bildergalerie/";
} else {
$sPath = $cfgClient[$client]["path"]["frontend"] . $cfgClient[$client]["upl"]["frontendpath"] . "CMS_VALUE[5]";
}
$iRows = "CMS_VALUE[3]";
if ($iRows == 0)
{$iRows = 2;}
$iColumns = "CMS_VALUE[2]";
if ($iColumns == 0) {$iColumns = 2;}
if (isset($start)) {$iCurrentPage = $start;
} else {
$iCurrentPage = 1;
}
$iWidth = "CMS_VALUE[0]";
$iHeight = "CMS_VALUE[1]";
if ($iWidth == 0) {$iWidth = 300;}
if ($iHeight == 0) { $iHeight = 300;}
$iDetailWidth = "CMS_VALUE[4]";
if ($iDetailWidth == 0) {$iDetailWidth = 300;}
$aValidExtensions = array("jpg", "jpeg", "gif", "png");
$iImagesPerPage = $iRows * $iColumns;
//aus dem ersten REQUEST-Teil verschobener Code:
$aGalleryFiles = scanDirectory($sPath, $bRecursive);
sort($aGalleryFiles);
if (is_array($aGalleryFiles))
{// Filter out non-images:
foreach ($aGalleryFiles as $key => $aGalleryFile)
{
$sExtension = strtolower(getFileExtension($aGalleryFile));
if (!in_array($sExtension, $aValidExtensions))
{
unset($aGalleryFiles[$key]);
}
} //ende foreach
/* Calculate effective variables */
$iFileCount = count($aGalleryFiles); //die anzahl der bilder
// $iPages = ceil($iFileCount / $iImagesPerPage); //liefert die Ganzzahl, die gleich oder größer Number ist
$aImagesToDisplay = array_slice($aGalleryFiles, ($iCurrentPage -1) * $iFileCount,$iFileCount);//$iImagesPerPage, $iImagesPerPage);
$oImageTpl = new Template;
$oGalleryTpl = new Template;
$oEmptyImageTpl = new Template;
$aRenderedImages = array();
$iRow = 0;
$iImagesRendered = 0;
$i = 0;
}
//ende verschobener Code
{//Generierung des Detailbildes
// vorheriges/nächstes Bild bestimmen
//das $_REQUEST analysieren:
$request_view_uebergabe = $_REQUEST['view'];
$requestpfad = explode('/', $request_view_uebergabe);
$letztes_element_request = count($requestpfad)-1;
$request_bild = $requestpfad[$letztes_element_request];
foreach ($aImagesToDisplay as $arrayelement)
{
//ins view-Format konvertieren:
$pfadarray = explode('/', $arrayelement);
$letztes_element = count($pfadarray)-1;
$bild = $pfadarray[$letztes_element];
$allebilder[] = $bild;
}
//Diese Funktion gibt den Index des aktuellen Bildes aus:
function bildfinder($array)
{
global $request_bild;
while(list($k,$val) = each($array))
{
if (preg_match("/$request_bild/",$val)) return $k;
}
return FALSE;
}
//Anwendung der Funktion bildfinder:
$k = bildfinder($allebilder);
$vorbildindex = $k-1;
$nachbildindex = $k+1;
if ($nachbildindex == $iFileCount) {$nachbildindex = 0;}
if ($vorbildindex < 0) {$vorbildindex = $iFileCount-1;}
$vorbild = "upload/CMS_VALUE[5]/".$allebilder[$vorbildindex];
$nachbild = "upload/CMS_VALUE[5]/".$allebilder[$nachbildindex];
$vorbild = 'front_content.php?idcatart='.$idcatart.'&start='.$_REQUEST['start'].'&view='.urlencode(str_replace($cfgClient[$client]['path']['frontend'],'',$vorbild));
$nachbild = 'front_content.php?idcatart='.$idcatart.'&start='.$_REQUEST['start'].'&view='.urlencode(str_replace($cfgClient[$client]['path']['frontend'],'',$nachbild));
//ende vorher,nachher
if ($_REQUEST['view']=='')
{
$sImageToDisplay = $aImagesToDisplay[0];
}
else
{
$sImageToDisplay = $cfgClient[$client]['path']['frontend'].$_REQUEST['view'];
}
$sScaledImage = cApiImgScale($sImageToDisplay, $iWidth, $iHeight);
$description = ig_getImageDescription($sImageToDisplay);
if ($description=='') {
$description = ' ';
}
$oImageTpl = new Template;
$oImageTpl->set("s", "IMG",$sScaledImage);
$oImageTpl->set("s", "BACKLINK",'front_content.php?idcat='.$idcat.'&idart='.$idart.'&start='.$_REQUEST['start']);
$oImageTpl->set("s", "BACKCAPTION",mi18n(""));
$oImageTpl->set("s", "DESCRIPTION", $description);
$oImageTpl->set("s", "DOWNLOAD_LINK", $download_link);
$oImageTpl->set("s", "DOWNLOAD_SIZE", $download_size);
$oImageTpl->set("s", "ZURUECK", mi18n("<"));
$oImageTpl->set("s", "WEITER", mi18n(">"));
$oImageTpl->set("s", "VORHERIGES", $vorbild);
$oImageTpl->set("s", "NAECHSTES", $nachbild);
/*$oImageTpl->set("s", "DOWNLOAD_CAPTION", mi18n("runter laden")); */
$oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_detail.html", false, false);
}
function ig_getImageDescription($idupl)
{
global $cfg, $cfgClient, $db, $client, $lang;
$cApiClient = new cApiClient($client);
$language_separator = $cApiClient->getProperty('language','separator');
if(is_numeric($idupl))
{//ID is a number
$query = "SELECT description FROM ".$cfg["tab"]["upl"]." WHERE idupl = ".$idupl;
}
else
{//ID is a string
$path_parts = pathinfo($idupl);
$upload = $cfgClient[$client]['upl']['frontendpath'];
$len = strlen($upload);
$pos = strpos($idupl,$upload);
$dirname = substr($path_parts['dirname'],$pos+$len).'/';
$query = "SELECT description FROM ".$cfg["tab"]["upl"]." WHERE (dirname = '".$dirname."') AND (filename='".$path_parts['basename']."') AND (filetype='".$path_parts['extension']."')";
}
$db->query($query);
if($db->next_record())
{
return htmlspecialchars(urldecode($db->f("description")));
}
else
{
return '';
}
}
function ig_GetReadableFileSize($path)
{
$filesize = filesize($path);
$unit = "bytes";
if ($filesize > 1024) {
$filesize = ($filesize / 1024);
$unit = "kB"; }
if ($filesize > 1024) {
$filesize = ($filesize / 1024);
$unit = "MB"; }
if ($filesize > 1024) {
$filesize = ($filesize / 1024);
$unit = "GB"; }
if ($filesize > 1024) {
$filesize = ($filesize / 1024);
$unit = "TB"; }
$filesize = round($filesize, 0);
return $filesize." ".$unit;
}
?>
Hat jemand von Euch Freaks `ne Idee? Das wäre toll!
Vielen Dank!
Grüße aus Berlin von
Muddy