Page 1 of 1

image_rotator andere Seite - andere Bilder

Posted: Thu Mar 11, 2010 8:32 pm
by jadokus
Hallo,

ich möchte gerne einen Bildwechsel in mein Template integrieren. Dies scheint nach Durchsicht dieses Forums mit dem Tag image_rotator möglich zu sein.
Ich möchte aber für unterschiedliche Seiten unterschiedliche Bilder anzeigen, ohne jeweils ein neues Template zu nutzen.
Gibt es dafür eine Möglichkeit?

Vielen Dank
Marcus

Re: image_rotator andere Seite - andere Bilder

Posted: Thu Mar 11, 2010 9:10 pm
by lollipop27
Ich kann mich nicht mehr richtig daran erinnern. Aber so wie ich das in Erinnerung habe, kann man dort doch ein Verzeichnis angeben, aus dem die Bilder ausgewählt werden.

Dann setzt doch als Verzeichnisnamen eine Variable wie {title} und leg für jeden Titel nen Ordner mit Bildern an...

Re: image_rotator andere Seite - andere Bilder

Posted: Thu Mar 11, 2010 9:40 pm
by nockenfell
Ich habe mal was ähnliches gemacht und dafür einen UDT geschrieben:

Code: Select all

if ($params["pfad"] == "") echo "kein Bildpfad ausgefüllt.";
else {
	if ($params["anzahl"] == "") $params["anzahl"] = 2;
	if (substr($params["pfad"],0,1) != "/") $params["pfad"] = "/".$params["pfad"];
	if (substr($params["pfad"],-1) != "/")   $params["pfad"] .= "/";
	
	$bilderdir = $_SERVER["DOCUMENT_ROOT"].$params["pfad"];

	$extList = array();
	$extList['gif'] = "image/gif";
	$extList['jpg'] = "image/jpeg";
	$extList['jpeg'] = "image/jpeg";
	$extList['png'] = "image/png";

	$img = null;
	
	// Dateien aus dem bilderdir in ein Array lesen
	
	$bilderfileList = array();
	$handle2 = opendir($bilderdir);
	while ( false !== ( $file2 = readdir($handle2) ) )
	{
		$file_info2 = pathinfo($file2);
		if (isset( $extList[ strtolower( $file_info2['extension'] ) ] ) and strpos($file2,"humb_") == 0 and strpos($file_info2['filename'],"_thumb") != False )
		{
			$bilderfileList[] = $file2;
		}
	}
	closedir($handle2);

	if (count($bilderfileList) == 0)
		echo "Der angegebene Ordner ".$params["pfad"]." enthält keine Bilder";
	else {	
		
		// Reihenfolge der Arrays zufällig mischen
				
		shuffle($bilderfileList);
				
		for ($i=0;$i<$params["anzahl"];++$i) {
			
			$url = str_replace("_thumb","",$params["pfad"].$bilderfileList[$i]);
			$pathinfo = pathinfo($url);
			$titel = str_replace("_"," ",$pathinfo["filename"]);
			$groesse=getimagesize($bilderdir.$bilderfileList[$i]);
			echo "<p><div class='captionborder' style='width:".$groesse[0]."px'><a href=\"".$url."\"><img src=\"".$params["pfad"].$bilderfileList[$i]."\"  alt=\"".$titel."\" /></a></div></p>\r\n";
		}
	}	
}		
Voraussetzung in diesem Beispiel war ein Ordner mit einer Datei bild.jpg und bild_thumb.jpg. Das Thumbnail wurde als Vorschau angezeigt und per Lightbox auf das grosse Bild verlinkt.

Einsetzen kannst du den Tag mit

Code: Select all

{tagname pfad="/uploads/images/ordner" anzahl="2"}
Es werden im obigen Beispiel immer 2 Bilder aus dem Ordner "/uploads/images/ordner" nach dem Zufallsprinzip angezeigt.

Der Tag image_rotator zeigt meines Wissens einfach mehrere Bilder in einer Art Diashow an.

Re: image_rotator andere Seite - andere Bilder

Posted: Sat Mar 13, 2010 1:39 pm
by jadokus
vielen dank, ich werde es in den nächsten Tagen ausprobieren.

Marcus

Re: image_rotator andere Seite - andere Bilder

Posted: Sat Mar 13, 2010 2:28 pm
by owr_bgld
Damit werden bei mir wechselnde Bilder angezeigt indem alle files ausgelesen werden und eines genommen wird:

Code: Select all

$dir = "uploads/dirname";

$files = array();
if ($handle = opendir($dir)) {
   while (false !== ($file = readdir($handle))) {
   	if($file != '.' && $file != '..')
      $files[] = $file;
   }
   closedir($handle);
}

if( ($c = sizeof($files)) > 0) {
	srand ((double)microtime()*1000000);
	$i = rand(0,($c-1));

	echo '<img src="'.$dir.'/'.$files[$i].'" alt="Logo" /><br />';
// Das untere benutze ich wenn ich das Bild als Background-Image haben will, jedoch nicht in der CSS-Datei möglich
//	echo $dir.'/'.$files[$i];       <- 
}
Wenn du z.B. die verschiednen Bilder für die verschiedenen seiten in Unterordner mit den jeweiligen Seitennamen gibst, dann einfach  $dir damit erweitern:

Code: Select all

$dir = "uploads/dirname/"; // den / hinzufügen
$dir .= $page_alias;   //Unterordner hat Namen des Seitenalias
Wenn du pro Seite nur ein Bild haben willst, einfach folgende Lösung:
Bild mit präfix des Seitenalias und immer gleichen Bildnamenspeichern, also z.B. SEITENALIAS_BILDNAME.jpg

bei img das src="mein/Verzeichnis/{$spage_alias}_BILDNAME.jpg"

Re: image_rotator andere Seite - andere Bilder

Posted: Fri Mar 19, 2010 11:03 pm
by jadokus
Hallo,

endlich bin ich zu den ersten Versuchen gekommen. Die Anwendung vom Image_Rotator mit absoluten Pfadangaben funktioniert. Ist es denn möglich, wie lollipop27 vorschlug, dem Pfad den Seitentitel anzufügen, also ungefähr so: {image_rotator folder="uploads/images/{title}"}? So funktioniert es übrigens nicht.

Danke
Marcus

Re: image_rotator andere Seite - andere Bilder

Posted: Sat Mar 20, 2010 5:16 pm
by lollipop27
jadokus wrote: Ist es denn möglich, wie lollipop27 vorschlug, dem Pfad den Seitentitel anzufügen, also ungefähr so: {image_rotator folder="uploads/images/{title}"}? So funktioniert es übrigens nicht.
Probier mal das:
{capture assign="url"}uploads/images/{$title}{/capture}
{image_rotator folder=$url}

Re: image_rotator andere Seite - andere Bilder

Posted: Sat Mar 20, 2010 5:31 pm
by NaN
Da der {title} aber diverse Sonderzeichen enthalten kann (Umlaute, Leerzeichen etc.) würde ich nicht den Titel einer Seite, sondern das Seiten-Alias nehmen:

Code: Select all


{image_rotator folder="uploads/images/$page_alias"}


Re: image_rotator andere Seite - andere Bilder

Posted: Mon Mar 22, 2010 10:42 am
by jadokus
Vielen Dank, es funktionert mit image_rotator und dem wechselnden Ordner.

Marcus