Bildmodul ordnen nach Bildname

Gesperrt
Zauberfee
Beiträge: 20
Registriert: Di 7. Dez 2004, 10:21
Wohnort: Grafschaft
Kontaktdaten:

Bildmodul ordnen nach Bildname

Beitrag von Zauberfee »

Hi @ all,

ich benutze das Bildermodul von:
***********************************************
* Bildergalerie
*
* Author : Timo A. Hummel
* Copyright : four for business AG
* Created : 30-09-2005
************************************************

Jetzt habe ich das Problem, dass ich die Bilder nach Bildnamen sortiern möchte in der Galerieübersicht.

Deshalb dacht ich ich könne einfach die SQL Abfrage mit dem Begriff
ODER BY filename dazu bringen, dass es die Bilder in meiner Bildbenennungsreihenfolge/meinem Bildnamen in der Galerieübersicht anzeigt.

Wenn ich diesen Befehl jedoch in das Outputmodul einfüge, dann ist das modul auf rot geschaltet. SEUFS :oops:
Ich habe keinen Schimmer warum und wie ich nun das Modul abändern kann damit es meine Bildernamen als Ordnungssystem in der Galerieübersicht annimmt :?:

Zur besseren Erklärung hier der Outputcode des Moduls:

Code: Alles auswählen

<?php
/***********************************************
* Bildergalerie Output
*
* Author      :     Timo A. Hummel
* Copyright   :     four for business AG
* Created     :     30-09-2005
************************************************/

cInclude("includes", "functions.api.images.php");

/* Gallery variables */
$bRecursive = false;

$sPath = "CMS_VALUE[5]";
if ($sPath=='') {
	$sPath = $cfgClient[$client]["path"]["frontend"] ."upload/bildergalerie/";
}

$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;

if ($_REQUEST['view']=='') {
	/* Read all gallery files */
	$aGalleryFiles = scanDirectory($sPath, $bRecursive);
	
         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]);
	  }
	}
	
	/* Calculate effective variables */
	$iFileCount = count($aGalleryFiles);
	$iPages = ceil($iFileCount / $iImagesPerPage);
	
	$aImagesToDisplay = array_slice($aGalleryFiles, ($iCurrentPage - 1) * $iImagesPerPage, $iImagesPerPage);
	
	$oImageTpl = new Template;
	$oGalleryTpl = new Template;
	$oEmptyImageTpl = new Template;
	
	$aRenderedImages = array();
	
	$iRow = 0;
	$iImagesRendered = 0;
	
	foreach ($aImagesToDisplay as $sImageToDisplay)

	{
	  /* Do Scaling */
	  $sScaledImage = cApiImgScale($sImageToDisplay, $iWidth, $iHeight);
	
	  $link = 'front_content.php?idcatart='.$idcatart.'&start='.$_REQUEST['start'].'&view='.urlencode(str_replace($cfgClient[$client]['path']['frontend'],'',$sImageToDisplay));

	  $description = ig_getImageDescription($sImageToDisplay);
	  if ($description=='') {
	  	$description = '&nbsp;';
	  }
	  
	  $download_link = str_replace($cfgClient[$client]['path']['frontend'],$cfgClient[$client]['path']['htmlpath'],$sImageToDisplay);

	  $download_size = ig_GetReadableFileSize($sImageToDisplay);
	  	  	
	  $oImageTpl->reset();
	  $oImageTpl->set("s", "FILE", $sScaledImage);
	  $oImageTpl->set("s", "WIDTH", $iWidth);
	  $oImageTpl->set("s", "HEIGHT", $iHeight);
	  $oImageTpl->set("s", "LINK", $link);
	  $oImageTpl->set("s", "DESCRIPTION", $description);
	  $oImageTpl->set("s", "DOWNLOAD_LINK", $download_link);
	  $oImageTpl->set("s", "DOWNLOAD_SIZE", $download_size);
	  $oImageTpl->set("s", "DOWNLOAD_CAPTION", mi18n("runter laden"));
	  $oImageTpl->set("s", "PREVIEW_CAPTION", mi18n("Bildvorschau"));
	  
	  $aRenderedImages[] = $oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_image2.html", true, false);
	
	  $iImagesRendered++;
	
	  if ($iImagesRendered == $iColumns)
	  {
	    $oGalleryTpl->set("d", "COLUMNS", implode("", $aRenderedImages));
	    $oGalleryTpl->next();
	    $iImagesRendered = 0;
	    $aRenderedImages = array();
	  }
	}
	
	if (count($aRenderedImages) < $iColumns && count($aRenderedImages) > 0)
	{
	  $iEmptyCells = $iColumns - count($aRenderedImages);
	
	  $oEmptyImageTpl->set("s", "WIDTH", $iWidth);
	  $oEmptyImageTpl->set("s", "HEIGHT", $iHeight);
	
	  $sEmptyCells = str_repeat($oEmptyImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_empty2.html", true, false),$iEmptyCells);
	 
	  $oGalleryTpl->set("d", "COLUMNS", implode("", $aRenderedImages) . $sEmptyCells);
	  $oGalleryTpl->next();
	}
	
	$aLinks = array();
	
	if ($iCurrentPage > 1)
	{
	  $oPreviousTpl = new Template;
	  $oPreviousTpl->set("s", "LINK", $cfgClient[$client]["path"]["htmlpath"] . sprintf("front_content.php?idcatart=%s&start=%s", $idcatart, $iCurrentPage - 1));
	  $oPreviousTpl->set("s", "TITLE", mi18n("Zurück"));
	  $aLinks[] = $oPreviousTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_link2.html", true, false);
	}
	
	if ($iCurrentPage < $iPages)
	{
	  $oNextTpl = new Template;
	  $oNextTpl->set("s", "LINK", $cfgClient[$client]["path"]["htmlpath"] . sprintf("front_content.php?idcatart=%s&start=%s", $idcatart, $iCurrentPage + 1));
	  $oNextTpl->set("s", "TITLE", mi18n("Vor"));
	  $aLinks[] = $oNextTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_link2.html", true, false);
	}
	
	$oGalleryTpl->set("s", "NAVIGATION", implode("", $aLinks));
	
	$oGalleryTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery2.html", false, false);
    }
} else {
	$sImageToDisplay = $cfgClient[$client]['path']['frontend'].$_REQUEST['view'];
	$sScaledImage = cApiImgScale($sImageToDisplay, $iDetailWidth, 1000);

    $description = ig_getImageDescription($sImageToDisplay);
	if ($description=='') {
	  $description = '&nbsp;';
	}

    $download_link = str_replace($cfgClient[$client]['path']['frontend'],$cfgClient[$client]['path']['htmlpath'],$sImageToDisplay);

	$download_size = ig_GetReadableFileSize($sImageToDisplay);
	
	$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("Zurück"));
    $oImageTpl->set("s", "DESCRIPTION", $description);
    $oImageTpl->set("s", "DOWNLOAD_LINK", $download_link);
	$oImageTpl->set("s", "DOWNLOAD_SIZE", $download_size);
	$oImageTpl->set("s", "DOWNLOAD_CAPTION", mi18n("runter laden"));
	
	$oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_detail2.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()){
		$arrDescriptions = explode($language_separator,htmlspecialchars(urldecode($db->f("description"))));
		if(count($arrDescriptions)==1){
			$retval=$arrDescriptions[0];
		}else{
			$t1 = $cfg['sql']['sqlprefix'].'_lang';
			$t2 = $cfg['sql']['sqlprefix'].'_clients_lang';
			$query = "SELECT ".$t1.".* FROM ".$t2." INNER JOIN ".$t1." ON ".$t1.".idlang = ".$t2.".idlang WHERE (".$t2.".idclient = 1) AND (".$t1.".active = 1) ORDER BY ".$t1.".idlang";
			echo $query;
		    $db->query($query);
			$i=0;
			$index=0;
		    while($db->next_record()){
				if($db->f("idlang")==$lang){
					$index=$i;
				}
				$i++;
			}
			if($index<count($arrDescriptions)){
				$retval=$arrDescriptions[$index];
			}else{
				$retval=$arrDescriptions[0];
			}
		}
		return htmlspecialchars(urldecode($retval));
	}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 vielleicht eine Idee :idea: was ich ändern muss?!

Vielen Dank für eure Hilfe und Mühe.
Liebe Grüße Petra
Jeder Anfang ist schwer! Ein Dankeschön für jede Hilfe! :-)
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Beitrag von xmurrix »

Hallo,

die Bilder für die Galerie liefert die Funktion scanDirectory. Du brauchst nur das Array $aGalleryFiles sortieren.

Vor der Zeile

Code: Alles auswählen

/* Calculate effective variables */
die Zeile

Code: Alles auswählen

asort($aGalleryFiles);
einfügen.

Gruß
xmurrix
Zauberfee
Beiträge: 20
Registriert: Di 7. Dez 2004, 10:21
Wohnort: Grafschaft
Kontaktdaten:

Beitrag von Zauberfee »

xmurrix hat geschrieben:Hallo,

die Bilder für die Galerie liefert die Funktion scanDirectory. Du brauchst nur das Array $aGalleryFiles sortieren.

Vor der Zeile

Code: Alles auswählen

/* Calculate effective variables */
die Zeile

Code: Alles auswählen

asort($aGalleryFiles);
einfügen.

Gruß
xmurrix
Hallo xmurrix,

lieben Dank für deine Hilfe, aber heute Nacht kam mir die Erleuchtung!!!:idea:
Hab das ORDER BY viel zu spät im Script eingesetzt!!!! 8)
Also hab ich schnell heute Morgen mein Erkenntnis zum Modul gebracht:

Code: Alles auswählen

   $sPath = $cfgClient[$client]["path"]["frontend"] ."upload/bildergalerie/ ORDER BY filename";
ergänzt und siehe da es ordnet nun nach meinen Bildernamen! :lol:

Vielen Dank und viele Grüße
Petra 8)
Jeder Anfang ist schwer! Ein Dankeschön für jede Hilfe! :-)
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Beitrag von xmurrix »

Nee, ich kann mir nicht vorstellen, dass

Code: Alles auswählen

$sPath = $cfgClient[$client]["path"]["frontend"] ."upload/bildergalerie/ ORDER BY filename";
funktioniert :?:
Zauberfee
Beiträge: 20
Registriert: Di 7. Dez 2004, 10:21
Wohnort: Grafschaft
Kontaktdaten:

Beitrag von Zauberfee »

xmurrix hat geschrieben:Nee, ich kann mir nicht vorstellen, dass

Code: Alles auswählen

$sPath = $cfgClient[$client]["path"]["frontend"] ."upload/bildergalerie/ ORDER BY filename";
funktioniert :?:
Doch Liebelein es funzt! :lol:
Die Bilder werden nun so sortiert, dass immer das Bild mit der kleinsten Nummer vorne als Erstes steht.
Gern kannst Du dir die Galrie ansehen:
http://www.p-cabrio.de/cms/front_content.php?idcat=83
Das erste Bild hat die Nummer 89 und das letzte Bild die Nummer 99.
Somit kann ich die Bilder von den großen Nummern absteigend sortieren.
Ein einfacher SQL-Befehl "ORDER BY filename" der nun sagt:
"Hey wir ordnen nun die Bilder nach der Reihenfolge!" :wink:
Man kann sie so aufsteigend und absteigend sortieren.

Überzeugt :?: :P

Viele Grüße und einen schönen Abend
von Petra, die nicht so gut Arrays programmieren kann :wink:
Jeder Anfang ist schwer! Ein Dankeschön für jede Hilfe! :-)
GaMbIt_
Beiträge: 674
Registriert: Do 16. Mär 2006, 16:17
Kontaktdaten:

Beitrag von GaMbIt_ »

Wau..

wie geil is das denn :D

:mrgreen: :mrgreen:
Gesperrt