[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Bildergalerie - Frage und Anregung - 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
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

Bildergalerie - Frage und Anregung

15. Jul 2005, 07:28

Hi zusammen,

ich hatte mal für eine private Site (www.annikabickel.de) eine einfache Bildergalerie gemacht. Die Anzahl der Bilder pro Seite ist natürlich variabel; jedes Bild wird als weiteres Slice eingebunden und das kleine Vorschaubild automatisch erstellt. Damit das große Bild beim Klick auf das kleine Bild erscheint, habe ich den mal von Jan vorgeschlagenen Ansatz verwendet, die Slice-ID in einem Hidden-Feld zu speichern, näheres siehe:
http://forum.redaxo.de/viewtopic.php?t=267

Klappt soweit alles ganz gut, hat aber einen entscheidenden Nachteil: Wenn man ein Bild neu einbindet, wird noch keine Slice-ID abgespeichert, weil ja das Slice erst zu diesem Zeitpunkt angelegt wird. Wie könnte man das lösen? Abfrage nach Anzahl der Slices und 1 dazu addieren beim erstmaligen Abspeichern? Oder hat jemand eine bessere Idee?


Da ich schon mehrere Anfragen nach der Bildergalerie erhielt, dachte ich, dass ich das Ganze bei Interesse zur Verfügung stellen könnte. Allerdings müsste man die Geschichte dann etwas aufbereiten, was ich nicht kann - in ein nettes CSS-Layout packen (Thomas?) und als selbst installierendes (?) Addon verpacken (kills?).

Wen Ihr da mithelfen wollt und das für sinnvoll haltet, meldet Euch einfach.

Grüße,
Peter.

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

15. Jul 2005, 08:32

Hi Peter,

ein Gallerie Addon wäre natürlich schön und bestimmt für den ein oder anderen auch nützlich.

Ich würde das ganze dann aber nicht per Artikel/Artikel Slices lösen...
Ich weiss jetzt leider auch nicht wie gut betucht du mit PHP bist?

Ich würde ein Addon bauen, dass z.b. wie das Gästebuch ein Modul mitinstalliert.

In diesem Modul würde ich eine Selectbox bauen, in der man eine Gallerie auswählen kann.

Die Gallerien selbst würde ich per Addon pflegen lassen. (Also eigene Tabelle etc..)

Denkbar wäre auch eine folgende Strukur:

Gallerie -> Album (-> Album -> Album -> ... ) -> Bilder



Also:

Addon bauen, indem man Kategorien (Gallerien) anlegen kann (keine rex_category bzw rex_file_category!)

Dann ein Formular zum hinzufügen von Bildern in diese Gallerien.
Der Zwischenschritt mit Alben etc. kann man ja nach beenden der ersten Version nachträglich einbauen...

Falls dir das alles zu viel ist, musst du bis August warten, dann werd ich Zeit für sowas haben... Bin zurzeit selbst drann neue Addons zu entwickeln..

Gruß,
Markus

PS: Wegen installer:
Einfach mal im Gästebuch Addon nachsehen wie das gemacht ist...

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

15. Jul 2005, 08:33

Hej Peter,

ich bin dabei.

Thomas

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

20. Jul 2005, 11:56

Hi Ihr beiden,
kills hat geschrieben: Ich würde das ganze dann aber nicht per Artikel/Artikel Slices lösen...
Ich weiss jetzt leider auch nicht wie gut betucht du mit PHP bist?
Nicht sonderlich. Ein Addon selber zu basteln, ist mir definitv zu hoch.
Ich finde aber den Ansatz mit den Artikeln gar nicht so schlecht. Da kann man dann einfach die gewünschten Bilder-Kategorien mit den Unterkategorien als Seiten anlegen. Ich sehe da eigentlich keinen Nachteil darin.

Zweifellos wäre ein Installer, der Module und Templates mitinstalliert, das Schönste. Aber das ist mir zu hoch. Deswegen werde ich nun einfach mal nachher meinen bisherigen Ansatz mit dem Quellcode posten. Vielleicht will ihn ja jemand weiterentwickeln, oder - wie vielleicht Thomas - hinsichtlich CSS optimieren.

Liebe Grüße,
Peter.

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

20. Jul 2005, 12:53

Also, hier wie angekündigt mein Ansatz für eine Bildergalerie:


1. Unterverzeichnis "thumbs" anlegen, Schreibrechte zuweisen und eine Aktion erstellen zum automatischen Erstellen eines "Thumbnails". Anleitung hierzu:
http://wiki.redaxo.de/pmwiki.php/Main/Aktionen


2. Modul "Galeriebild" erstellen

Eingabe:

Code: Alles auswählen

REX_MEDIA_BUTTON[1]

<?
if ("FILE[1]" != "") {
  echo "<img src=/$REX[WWW_PATH]files/FILE[1]>";
}
?>

<br><br>
Bildbeschreibung:<br>
<textarea name=VALUE[1] cols=80 rows=4 class=inp100>REX_VALUE[1]</textarea>
<input type=hidden name=VALUE[10] value="<? echo $GLOBALS[slice_id]; ?>">
<br><br>

Ausgabe (dient nur zur Kontroll-Ausgabe im Backend):

Code: Alles auswählen

<?
if ($REX[REDAXO] == true) {

$BILD = "";
if ("FILE[1]" != "") $BILD = "<img src=$REX[HTDOCS_PATH]files/thumbs/FILE[1]>";

echo "$BILD";
echo " FILE[1]";
echo "<br><br>REX_VALUE[1]";

}
?>

Die Aktion zur Thumbnail-Erstellung dem Modul als PRE-Aktion zuweisen.



3. Template "Grosses Bild" erstellen (zeigt das große Foto an):

Code: Alles auswählen

<a name="show"></a>

<?
if (isset($GLOBALS[pic])) {
  $GD = new sql;
  $GD->setQuery("select * from rex_article_slice
  where 
  rex_article_slice.article_id=$GLOBALS[article_id]
  and
  rex_article_slice.id=$GLOBALS[pic]");

  echo "<img border=0 src=files/".$GD->getValue("rex_article_slice.file1")."><br>";
  if ($GD->getValue("rex_article_slice.value1") != "") {
    echo nl2br(htmlentities($GD->getValue("rex_article_slice.value1")));
  }
  echo "<br>";
  $GD->next();
}

else {
  $GE = new sql;
  $GE->setQuery("select * from rex_article_slice
  where 
  rex_article_slice.article_id=$GLOBALS[article_id]
order by rex_article_slice.file1");

  echo "<img border=0 src=files/".$GE->getValue("rex_article_slice.file1")."><br>";
  if ($GE->getValue("rex_article_slice.value1") != "") {
    echo nl2br(htmlentities($GE->getValue("rex_article_slice.value1")));
  }
  echo "<br>";
}
?>
Erläuterung: Der Anker #show dient lediglich dazu, beim Klick auf ein kleines Thumbnail-Bild gleich an die Oberkante des großen Bildes zu springen. (Der User muss so nicht nach unten scrollen.)

Die If-Abfrage schaut, ob eine Variable "pic" gesetzt ist. Falls ja (was beim Klick auf ein Thumbnail-Bild passiert), dann wird das entsprechende große Bild gezeigt. Falls nein (was der Fall ist, wenn man die Galerieseite zum ersten Mal aufruft), dann wird einfach das erste Bild der Galerie groß gezeigt.


4. Template "Thumbails" erstellen (zeigt dann die Thumbnails an, bei mir in einer Tabelle mit vier Spalten angeordnet):

Code: Alles auswählen

<?
$GC = new sql;
$GC->setQuery("select * from rex_article_slice
where 
rex_article_slice.article_id=$GLOBALS[article_id]");

echo "<table><tr>";
for ($i=0;$i<$GC->getRows();$i++)
{

  if ($GC->getValue("rex_article_slice.id") == $GLOBALS[pic]) {
    $class = "rand2";
  }
  else {
    $class = "rand1";
  }

echo "<td align=center valign=middle><a href=\"index.php?article_id=".$GLOBALS[article_id]."&pic=".$GC->getValue("rex_article_slice.value10")."#show\"><img border=0 class=".$class." src=/files/thumbs/".$GC->getValue("rex_article_slice.file1")."></a></td>";
  if ($i == 3) {
    echo "</tr><tr>";
  }
  if ($i == 7) {
    echo "</tr><tr>";
  }
  if ($i == 11) {
    echo "</tr><tr>";
  }
$GC->next();
}

echo "</tr></table>";
?>
Erläuterung:
Die If-Abfrage am Anfang prüft, ob das Thumbnail-Bild das zum großen Bild gehörige ist. Falls ja, wird eine andere Formatierung (rand2) zugewiesen als den anderen Thumbnails (rand1). Damit kann man dem derzeit aktiven Thumbnail zum Beispiel einen dickeren Rand zuweisen.

Die drei If-Abfragen unten umbrechen nach jeweils vier Spalten in eine neuen Tabellenzelle. Momentan sind so maximal 16 Zellen, bzw. Bilder möglich. Bei Bedarf muss man diese Schleife halt geschickter lösen.


5. Die beiden Templates dann im Haupttemplate an der gewünschten Stelle einbinden.


Die Programmierer unter Euch sollten Nachsicht walten lassen, denn ich bin nur Laie und habe daher sicher manche Dinge recht umständlich gemacht. Aber es funktioniert, und vielleicht gibt's ja auch Verbesserungen, etc.


Was noch getan werden sollte: Wie bereits weiter oben gepostet ist ein großer Nachteil meiner jetzigen Lösung, dass die Zuweisung der eindeutigen Slicenummer (ins Textfeld Nummer 10) noch nicht beim erstmaligen Anlegen/Einbinden eines neuen Bildes funktioniert, da es da ja noch keine ID gibt. Man muss also das Bild erneut im Backend öffnen und abspeichern, damit diese Zuweisung (und der Klick aufs Thumbnail) korrekt funktioniert.


Viel Spaß jedenfalls damit, wer's brauchen kann.
Peter.

Goldfisch
Beiträge: 230
Registriert: 22. Sep 2004, 17:47
Wohnort: Aschaffenburg
Kontaktdaten: Website

21. Jul 2005, 18:06

Vielleicht ein einfacher Ansatz für eine Galerie, die Vorschaubilder in einem anderen Format hat, als die Vergrößerungen.

Zwei Kategorien im Medienpool, Vorschau, Bilder.


Modul:

Select auf Kategorien des Medienpools -> Auswahl der Kategorie Vorschau
Eingabe wieviele Bilder horz und verti. in der Galerie dargestellt werden.

Das Modul lädt nun alle Bilder aus der gewählten Kateogrie und stellt sie
in der Galerie dar.

Vorschau - Vergrößerung:
Vergrößerung hat gleichen Dateinamen (Namen des Medium im Pool) + "_xl"

Will man das ohne Vorschaubilder machen, dann werden in der Galerie die Bilder "resized" dargestellt.


?

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

21. Jul 2005, 18:19

Hej,

mir fiel gerade ein, das ich "ne Art Gallerie" auch schon mal gemacht hatte

http://mahlis.de/index.php?article_id=77

sehr einfach für den Benutzer, aber ich denke aus Prgrammiertechnischer Sicht zu umständlich.

Thomas

Zurück zu „Allgemeines [R2]“