[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Anzeige von zufälligen Bildern - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
holger
Beiträge: 403
Registriert: 21. Jun 2005, 13:21
Wohnort: Sehnde / Hannover / lower saxony
Kontaktdaten: Website

Anzeige von zufälligen Bildern

27. Aug 2005, 15:26

Hallo,
ich hatte ja schon unter "Allgemeines" mein Script vorgestellt, um ein oder mehrere zufällige Bilder anzeigen zu lassen.

Ich fange das Thema hier nochmal neu an, da ich nun schon den Eingabeteil soweit fertig habe.

Nur bei der Ausgabe, da reichen meine Kenntnisse noch nicht so ganz.
Ich bekomme das mit den Kategorien nicht so ganz hin.
Vielleicht hat jemand auch Interesse an dem Script und kann es weiter vollenden.

Der Sinn soll sein, das man ein oder mehrere Bilder aus einer bestimmten Kategorie zufallsmäßig anzuzeigen lassen kann.

Hier der Code bis jetzt:

Eingabe:

Code: Alles auswählen

<?

// Check ob schon was ausgewählt ist
if ( "REX_VALUE[1]" ) {
	$selectedCat = "REX_VALUE[1]";
} else {
	$selectedCat = "";
}

if ( "REX_VALUE[2]" ) {
	$anzahl = "REX_VALUE[2]";
} else {
	$anzahl = "3";
}

if ( "REX_VALUE[3]" ) {
	$zwischen = "REX_VALUE[3]";
} else {
	$zwischen = "<br>";
}

if ( "REX_VALUE[4]" == "true" ) { 
	$val4checked = "checked";
} else { 
	$val4checked = "";
}

if ( "REX_VALUE[5]" ) {
	$breite = "REX_VALUE[5]";
} else {
	$breite = "150";
}

// --- Output ---

echo "<b>Kategorie</b><br/>";
echo "Bitte die Kategorie der Bilder auswählen:<br />\n";
// show the mediapool-categories
echo "\n<select  class=\"inp50\" name=\"VALUE[1]\">\n";
CnPrintMediaCats();
echo "</select>\n";

echo "<br /><b>Anzahl der gleichzeitig dargestellten Bilder</b><br />";
// Anzahl
echo "Gewünschte Bildanzahl:<br /> ";
echo "<input type=\"text\" size=\"5\" name=\"VALUE[2]\" value=\"$anzahl\" />";

echo "<br /><b>Trennung zwischen den Bildern</b><br />";
// Trennung
echo "Wie sollen die Bilder getrennt werden:<br /> ";
echo "<input type=\"text\" size=\"50\" name=\"VALUE[3]\" value=\"$zwischen\" />";


echo "<br /><b>Breite der Bilder</b><br />";
// Gleiche Breite
echo "Alle Bilder die gleiche Breite:<br /> ";
echo "<input type=\"checkbox\" name=\"VALUE[4]\" value=\"true\" $val4checked/> Ja/Nein ";
echo " Wenn ja, dann Bildbreite: ";
echo "<input type=\"text\" size=\"5\" name=\"VALUE[5]\" value=\"$breite\" /> px<br />";


///////////////////////////////////////////////////////
// Helper functions
///////////////////////////////////////////////////////

function CnPrintMediaCats( $cat = null) {
	$selectCats = null;
	if ( is_int( $cat)) {
		$selectCats = array( OOMediaCategory::getCategoryById( $cat));
	} else if ( OOMediaCategory::isValid( $cat)) {
		$selectCats = array( $cat);
	} else {
		$selectCats = OOMediaCategory::getRootCategories();
	}

	foreach ( $selectCats as $selectCat) {
		add_cat_option( $selectCat);
	}
}


?>
Ausgabe:

Code: Alles auswählen

<?
//CHRONO.net Media Works Hildesheim

// Mit diesem Script kann man mehrere zufällige Bilder anzeigen lassen.
// Die Bilder müssen dafür nur in ein Verzeichnis geladen werden. Es werden nur Bilder aus dem Verzeichnis ausgelesen.

global $filepath;
global $CnCat;
if (!$CnCat) { $CnCat = REX_VALUE[1]; };

$anzahl = REX_VALUE[2];

$folder=opendir("./files");
// Pfad mit den Bildern ohne 

$domain_dir= $REX[HTDOCS_PATH]."files/";
//URL zu dem Redaxo Bilderordner mit Abschluss /

$break = REX_VALUE[3];
// Was soll zwischen jedes Bild ?

$width_active= REX_VALUE[4];
$width = REX_VALUE[5];
// Alle Bilder werden in dieser Breite angezeigt. (Wenn nicht gewünscht, Wert auf false)


// ------------- Hier nichts mehr ändern ---------------

while ($file = readdir($folder))
$names[count($names)] = $file;
closedir($folder);
//sort file names in array
sort($names);
//alle Nichtbilder aus dem Array entfernen
$tempvar=0;
for ($i=0;$names[$i];$i++){
$ext=strtolower(substr($names[$i],-4));
if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png"){$names1[$tempvar]=$names[$i];$tempvar++;}
}
$rand_var = mt_srand((double)microtime()*1000000);
$rand_var = array_rand($names1,$anzahl);
for($x=0;$x<count($rand_var);$x++){
if ($width_active == "true") {
  echo '<img src="'.$domain_dir.$names1[$rand_var[$x]].'" width="'.$width.'"><br><br>' . $break; }
else   {
  echo '<img src="'.$domain_dir.$names1[$rand_var[$x]].'"><br><br>' . $break; }
   }
// man kann auch "echo" mit "include" austauschen; als Wert für $numberX muss dann ein Dateiname [ "datei.htm" ] stehen
// das Ergebnis: Es wird die Datei "datei.htm" ausgegeben
?>

mfg
Holger
Zuletzt geändert von holger am 27. Aug 2005, 15:45, insgesamt 1-mal geändert.
// Wenn die Theorie von der Praxis abweicht: --> Ändere die Theorie //

CHRONO.net Media Works
In der Wörth 11
31319 Sehnde
+495138614810 tel
+495138615553 fax
info@chrono.net

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

27. Aug 2005, 15:37

Hi Holger,

ich würde das ganze anders angehen.

Wieso nimmst du nicht alle Bilder aus einer Kategorie im Medienpool?
Diese könntest du dann ähnlich, wie im Modul zufälliger Artikel auslesen.

Gruß,
Markus

EDIT:
Anstatt der OOCategory müsstest du eben die OOMediaCategory und
anstatt der OOArticles dann OOMedia Objekte verwenden.

Damit man nur die Bilder aussortieren kann, könnte man in der OOMediaCategory eine Methode getMediumByExtension( $extension) reinmachen, damit du nicht auch noch alle anderen Medien aussortieren musst.

Zurück zu „Allgemeines [R3]“