Variante der Bidergalerie: Thumbs überspringen

Gesperrt
muddy
Beiträge: 12
Registriert: Sa 3. Jun 2006, 16:32
Wohnort: Berlin
Kontaktdaten:

Variante der Bidergalerie: Thumbs überspringen

Beitrag von muddy » Sa 12. Jan 2008, 23:08

Hallo Leute,
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 
Output (code am 30.1. nach dem Tip von miertschink_st (s.u. letzter post) aktualisiert... so funktioniert`s)

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 = '&nbsp;';
                    } 
          
     
          $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
Zuletzt geändert von muddy am Di 1. Jul 2008, 20:41, insgesamt 5-mal geändert.

muddy
Beiträge: 12
Registriert: Sa 3. Jun 2006, 16:32
Wohnort: Berlin
Kontaktdaten:

Beitrag von muddy » Di 15. Jan 2008, 21:13

Hey Leute,
noch keine Ideen, wie man diese Galerie umstricken könnte, damit die Thumbnailansicht einfach übersprungen wird...? Schade!

Möchte denn keiner von Euch an dieser Galerie ein wenig `rumschrauben, so `ne einfache Galerie wäre doch auch mal wieder ganz schön in Zeiten von Lightbox & Co...

Dann frage ich mal so: Was würde es denn kosten, wenn einer von Euch Profis Hand anlegen würde???

Über eine Antwort würde ich mich freuen!

Grüße aus Berlin von
Muddy

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

Beitrag von miertschink_st » Di 15. Jan 2008, 21:41

Tach,

ich hab gestern mal versucht dein Problem nachzuvollziehen und hab die Galerie installiert. Dabei kamen aber fiese Fehlermeldungen denen ich so auf die schnelle nicht Her geworden bin.

Warning: Invalid argument supplied for foreach() in /www/htdocs/w00691d8/cms/bulleritz/front_content.php(1027) : eval()'d code on line 680

Fatal error: Call to a member function on a non-object in /www/htdocs/w00691d8/cms/bulleritz/front_content.php(1027) : eval()'d code on line 777

Wenn du mir da helfen kannst, kann ich vielleicht auch dir helfen

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

Beitrag von miertschink_st » Do 17. Jan 2008, 23:05

Such mal im Output nach folgender Zeile:

Code: Alles auswählen

$sImageToDisplay = $cfgClient[$client]['path']['frontend'].$_REQUEST['view'];
Und ersetzt sie durch

Code: Alles auswählen

if ($_REQUEST['view']=='') 
{
		 $sImageToDisplay = $aImagesToDisplay[0];
}
else
{
          $sImageToDisplay = $cfgClient[$client]['path']['frontend'].$_REQUEST['view'];
}
Und ja, du hast zuviel vom Code gelöscht bzw. rumgewühlt.
:wink:

muddy
Beiträge: 12
Registriert: Sa 3. Jun 2006, 16:32
Wohnort: Berlin
Kontaktdaten:

Beitrag von muddy » Mi 30. Jan 2008, 22:01

Suuuuper! So funktioniert die Galerie jetzt prima!

Ich habe die Korrektur oben in meinem ersten Beitrag eingefügt.

Vielen Dank für Deine Hilfe und schöne Grüße von
Muddy

bunny3112
Beiträge: 28
Registriert: Di 6. Feb 2007, 23:04
Kontaktdaten:

..gibt da doch einen Fehler

Beitrag von bunny3112 » Di 1. Jul 2008, 18:12

Hallo,

ich bin durch die Suche auf Deinen Beitrag gestoßen und bin sehr an der Galerie interessiert.. habe auch versucht das Modul einzurichten, jdeoch muss irgendwo im Output noch ein Fehler sein.. die "Ampel" wird nicht grün..

Wäre dankbar für ne Antwort

muddy
Beiträge: 12
Registriert: Sa 3. Jun 2006, 16:32
Wohnort: Berlin
Kontaktdaten:

Beitrag von muddy » Di 1. Jul 2008, 20:35

Hallo,

komisch, hat sich da im Code ein Fehler eingeschlichen?

Ich habe gerade nochmals den bei mir funktionierenden Output oben eingefügt.

Es sollte jetzt auf jeden Fall bei Dir klappen...

Viele Grüße von
Muddy

bunny3112
Beiträge: 28
Registriert: Di 6. Feb 2007, 23:04
Kontaktdaten:

:)

Beitrag von bunny3112 » Mi 2. Jul 2008, 12:14

Hallo,

danke für die schnelle Antwort.. jetzt geht auch die Ampel auf grün :)

Gesperrt