Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü

Galerie-Übersicht auf Inhaltsseite

Begonnen von Promoz, 20. September 2009, 21:33:07

« vorheriges - nächstes »

Promoz

Um eine Galerie-Übersicht - oder auch mehrere - direkt auf einer Inhaltsseite einzubinden, lese ich via php-Datei die Bilder aus den jeweiligen Galerie-Vorschau-Ordnern ein und gebe sie auf der Inhaltsseite aus.

Der Aufruf der Bilder/Galerien erfolgt mit einem Klick aufs Bild. Bei zufälliger Bildanzeige wird stets das erste Bild in der eigentlichen Galerieansicht aufgerufen, ansonsten das sofort das angeklickte Bild. (Eine Lösung, wie auch bei zufälliger Bildauswahl das jeweilige Bild direkt aufgerufen werden kann, habe ich noch nicht gefunden. Das Bildereinlesen der Datei gallery.php funtioniert offenbar nach anderen Regeln. Tipps willkommen...)

Durch Parameterangaben beim Aufruf der php-Datei auf der Inhaltsseite kann außer einem gültigen und zwingenden Eintrag eines Mozilo-Galerie-Namens (ansonsten Fehlermeldung) gesteuert werden:

- die Anzahl der angezeigten Bilder (Vorgabe 1; wenn größer als Gesamtzahl der Bilder, dann alle)
- ob die Bilderauswahl zufällig oder nicht angezeigt wird (Vorgabe 0, also nein)
- wieviele Bilder nebeneinander (Spaltenanzahl) angezeigt werden (Vorgabe 4)

Die Darstellung der einzelnen Galerie-Titelzeilen und der Bilderübersicht wird über zusätzliche Einträge in der aktuellen Layout-css-Datei festgelegt.

Anwendungsbeispiel unter www.progt.de (Bilderbogen).

Promoz

---

Aufruf der php-Datei und der darin enthaltenen Funktion in der Inhaltsseite aus dem Ordner myphp:

[php|include("myphp/showgalprepics.php");]

[php|ShowGalPrePics("Spexard",2,1,2);]
[php|ShowGalPrePics("Garten",99,0,4);]
[php|ShowGalPrePics("Allerlei",3,0,3);]

Code der php-Datei:

<?php
function ShowGalPrePics($_galdir,$_show=1,$_rand=0,$_col=4)
{
if(
$_show 1$_show 1;
if(
$_col 1$_col 1;

$_dir "./galerien/".$_galdir."/vorschau";

if(!
file_exists($_dir)):
  echo 
"<br>Galerie <span style="color:#ff0000;font-size:1.1em;font-weight:bold">".$_galdir."</span> 
           
nicht gefunden.<br>";
else:
  
$d = dir($_dir);
  // Vorschau-Ordner einlesen
  while(
$entry=$d->read()):
    if(substr(
$entry,-4) == ".jpg" || substr($entry,-4) == ".gif" || substr($entry,-4) == ".png"):
      
$_picarray[] = $entry;
    endif;
  endwhile;
  
$d->close();

  asort(
$_picarray);
  
$_pics = count($_picarray);
  if(
$_show > $_pics$_show = $_pics;
  
  // Wenn Zufalls-Parameter gesetzt, dann Bilder-Array "
schütteln"
  if(
$_rand == 1):
    shuffle(
$_picarray);
  endif;

  
$_showarray = array_slice($_picarray,0,$_show);

  // Anzeige Galerie-Titel
  echo "
<table class="showgalprepicstitle">";
  echo "
<tr><td class="showgalprepicstitle">";
  echo 
$_galdir;
  echo "
&nbsp;<span style="font-size:0.8em">(".$_show." von ".count($_picarray).")</span>";
  if(
$_rand == 1):
    echo "
&nbsp;<span style="font-size:0.8em;font-weight:normal">Auswahl/Anordnung zufällig</span>";
  endif;
  echo "
</td></tr>";
  echo "
</table>";

  // Anzeige Bilderübersicht
  echo "
<table class="showgalprepics">";
  echo "
<tr><td colspan="$_show">";
  if(
$_rand == 1):
    echo "
Galerie aufrufen mit Klick aufs Bild.";
  else:
    echo "
Bild/Galerie aufrufen mit Klick aufs Bild.";
  endif;
  echo "
</td></tr>";
  echo "
<tr>";
  
$_a = 0;
  foreach (
$_showarray as $_key => $_value):
    if(
$_a > 0 && ($_a%$_col == 0)):
      echo "
</tr><tr>";
    endif;
    echo "
<td class="showgalprepics">";
    if(
$_rand == 1):
      echo "
<a href="./gallery.php?gal=".$_galdir."">
              <
img class="showgalprepics" src="".$_dir."/".$_value."" alt=""></a>";
    else:
      echo "
<a href="./gallery.php?gal=".$_galdir."&index=".($_key+1)."">
              <
img class="showgalprepics" src="".$_dir."/".$_value."" alt=""></a>";
    endif;
    echo "
</td>";
    
$_a += 1;
  endforeach;
  echo  "
</tr>";
  echo "
</table>";

endif; //!file_exists
}
?>

Einträge in css-Datei des aktuellen Layouts:

/* -------------------------------------------------------- */
/* ShowGalPics*/
/* --------------- */
table.showgalprepicstitle {
 width:95%;
}
td.showgalprepicstitle {
 font-size:1.3em;
 font-weight:bold;
 color:#ffffff;
 background-color:#8F8F8F;
 padding:4px;
}
a.showgalprepicstitle {
 font-size:1.3em;
 color:#ffffff;
 text-decoration:none;
}
a.showgalprepicstitle:hover {
 color:#000000;
}
table.showgalprepics {
}
td.showgalprepics {
 padding:5px 10px 5px 0;
 vertical-align:top;
}
img.showgalprepics {
 border:1px solid #000000;
}

azett

#1
Sehr, sehr cool. Und alles ohne Anpassungen am Standard-Code. Danke!

Promoz

#2
Um alle Bilderverzeichnisse aus dem Mozilo-CMS-Galerieordner auf einer Inhaltsseite automatisch anzuzeigen, benutze ich folgende php-Datei und binde sie in die Inhaltsseite ein.

Die Steuerung mittels Parameter ist möglich für
- Anzahl der angezeigten Bilder
- zufällige Auswahl (Vorgabe 0, also nein)
- Spaltenanzahl

Promoz

Einbinden in Inhaltsseite wie folgt:

[php|include("myphp/showgalall.php");]

[php|ShowGalAll(4,1,4);]

Code der Datei showgalall.php

<?php
function ShowGalAll($_show=1,$_rand=0,$_col=4)
{
 
$_dirs "./galerien";

 
// Verzeichnisse des Galerie-Ordner einlesen 
 
$_d dir($_dirs);
 while(
$entry1=$_d->read()):
  if(
$entry1 != "." && $entry1 != ".."):
   
$_dirsarray[] = $entry1;
  endif;
 endwhile;
 
$_d->close();

 
//Ausgabe der einzelnen Galerie-Bilderverzeichnisse
 
foreach ($_dirsarray as $_key1 => $_value1):
  
$_pics 0;
  
$_picarray = array();
  
$_showarray = array();
  
$_show1 $_show;
  if(
$_show1 1$_show1 1;
  if(
$_col 1$_col 1;

  
$_dir "./galerien/".$_value1."/vorschau";

  
$d dir($_dir);
  while(
$entry=$d->read()):
   if(
substr($entry,-4) == ".jpg" || substr($entry,-4) == ".gif" ||     substr($entry,-4) == ".png"):
    
$_picarray[] = $entry;
   endif;
  endwhile;
  
$d->close();

  
asort($_picarray);
  
$_pics count($_picarray);
  if(
$_show1 $_pics$_show1 $_pics;

  if(
$_rand == 1):
   
shuffle($_picarray);
  endif;

  
$_showarray array_slice($_picarray,0,$_show1);

  echo 
"<table class="showgalprepicstitle">";
  echo 
"<tr><td class="showgalprepicstitle">";
  echo 
$_value1;
  echo 
"&nbsp;<span style="font-size:0.8em">(".$_show1." von  ".count($_picarray).")</span>";
  if(
$_rand == 1):
   echo 
"&nbsp;<span style="font-size:0.8em;fontweight:normal">Auswahl/Anordnung zufällig</span>";
  endif;
  echo 
"</td></tr>";
  echo 
"</table>";

  echo 
"<table class="showgalprepics">";
  echo 
"<tr><td colspan="$_show">";
  if(
$_rand == 1):
   echo 
"Galerie aufrufen mit Klick aufs Bild.";
  else:
   echo 
"Bild/Galerie aufrufen mit Klick aufs Bild.";
  endif;
  echo 
"</td></tr>";

  echo 
"<tr>";

  
$_a 0;
  foreach (
$_showarray as $_key => $_value):
   if(
$_a && ($_a%$_col == 0)):
    echo 
"</tr><tr>";
   endif;
   echo 
"<td class="showgalprepics">";
   if(
$_rand == 1):
    echo 
"<a href="./gallery.php?gal=".$_value1.""><img class="showgalprepics" src="".$_dir."/".$_value."" alt=""></a>";
   else:
    echo 
"<a href="./gallery.php?gal=".$_value1."&index=".($_key+1).""><img class="showgalprepics" src="".$_dir."/".$_value."" alt=""></a>";
   endif;
   echo 
"</td>";
   
$_a += 1;
  endforeach;

  echo  
"</tr>";
  echo 
"</table>";

 endforeach;
}
?>

azett

#3
Wunderbar :)

Ich war mal so frei, das noch XHTML-valide zu machen: showgalall.zip

AtariRiot

#4
hallo,

hab ich mal versucht... bei mir streicht er aber

[php|include("myphp/showgalprepics.php");]

[php|ShowGalPrePics("Spexard",2,1,2);]

nur rot durch.  :roll:
Ich bin mal kurz am U-Boot Flughafen wo ich mich bei der Anmeldung in der rechten Ecke links rum zum Adler-Tauchen abmelden kann...

azett

#5
Du hast das PHP-Element noch nicht aktiviert - so gehts :)

Bei allen rot durchgestrichenen Syntaxelementen wird ürigens die Fehlerursache als Tooltip angezeigt, wenn du die Maus kurz drüber stehen läßt (siehe Doku).

KhanDragos

#6
Hallo,

habe den Tipp voller Erwarten ausprobiert und funktioniert soweit.

Mein Problem ist es, dass ich meine Seite mit div aufgebaut habe, und die Gallerie daher ganz oben erscheint.

Ich stehe momentan auf dem Schlauch und weiß grad nicht wie ich die Bilderübersicht in mein Layout bekomme.

Kann mir jemand mal einen Tipp geben!

Grüße
KhanDragos

azett

#7
Aus der Kalten schlecht zu sagen - poste mal bitte den Link zu deiner Seite.

KhanDragos

#8
Danke schonmal für deine Mithilfe.

Hier der Link:
http://www.landgasthaus-sonthof.de/inde ... =08_Bilder

Die Seite ist noch nirgends verlinkt, solange sie nicht richtig funktioniert.

Ich denke mal das ist nur ein kleiner CSS-Befehl, nur welcher?

Grüße
KhanDragos

azett

#9
Der HTML-Code der Galerie-Tabelle ist das erste, was ausgegeben wird (schau dir mal den Quelltext der Seite an)...ich vermute, daß da irgendwo ein "echo" drin steckt. Bei mir klappts mit folgender Syntax in der Inhaltsseite: [php|include("myphp/showgalall.php");]
[php|return ShowGalAll("moziloCMS", 4,1,4);]

KhanDragos

#10
Hallo,

also das mit dem return hat geklappt, es ist drin.

Nur zeigt es bei mir nur die erste Galerie an, obwohl ich ShowGalAll eingegeben habe.

Ich hab es probiert mit:
[php|include("showgalall.php");]
[php|return ShowGalAll("Landgasthaus", 4,1,4);]

oder

[php|include("showgalall.php");]
[php|return ShowGalAll(4,1,4);]

Es wird immer nur die erste Galerie angezeigt, echt komisch...

Metzle

#11
Hallo,

ich weiß, lange her mit dem Thread, aber ich hatte dieses Problem heute auch erst mal, dass mir nicht alle Galerien angezeigt wurden.
Im validen Skript von azett fehlt lediglich ein kleines Pünktchen zum Glück.

Finde:
 $html = "<table class="showgalprepicstitle" summary="">";
Ersetze mit:
 $html .= "<table class="showgalprepicstitle" summary="">";
Nach dieser Änderung hat das bei mir hingehauen, dass alle Galerien angezeigt werden.

Einbindung in die Inhaltsseite dann wie folgt:
[php|include("myphp/showgalall.php");]
[php|return ShowGalAll("moziloCMS", 4,1,4);]
Metzle

"Du kannst den Wind nicht kontrollieren, aber du kannst die Segel richtig setzen!"
( unbekannt )


|respAction e.V.| |MetziMods|

KhanDragos

#12
hy,

danke jetzt funktioniert es wieder.

was ein kleiner punkt alles ausmachen kann.

dummwiebrot

#13
Hallo zusammen,

ich muss den Thread noch mal aus der Versenkung holen. Ich bin erst gestern darauf gestoßen, und wollte das auch gleich ausprobieren, aber irgendwie bin ich dafür zu blond.

In der Syntax.php habe ich das PHP-Element aktiviert. Gebe ich in der Inhaltsseite
[php|return "Hello World!";] ein, dann wird das auch so wie gewünscht ausgegeben. Bis hierhin sollte ich also alles richtig gemacht haben.

Dann habe ich die Datei showgalall.php hochgeladen (nach Kategorien - Galerie - dateien), und den fehlenden Punkt noch eingefügt.
In die Inhaltsseite habe ich dann  folgendes eingegeben:

[php|include("showgalall.php");]

[php|return "ShowGalAll("Libellen",4,1,4)";]
[php|return "ShowGalAll("moziloCMS",4,1,4)";]
Leider wird mir außer der Überschrift nichts angezeigt.

Weitere Varianten die ich versucht habe:
[php|include("showgalall.php");]

[php|return "ShowGalPrePics("Libellen",4,1,4)";]

[php|include("showgalall.php");]

[php|"ShowGalAll("Libellen",4,1,4)";]

Ergebnis jeweils wie oben.

[php|include("showgalall.php");]

[php|return ShowGalAll("Libellen",4,1,4);]
Hier bekomme ich eine leere weiße Seite.

Das ganze hab ich Lokal unter xampplite getestet, unter http://mozilolayouts.bechti.de/index.php?cat=14_Galerie (unter der gestrichelten Linie sollten eigentlich die Galerien angezeigt werden) und unter http://bechti.be.funpic.de/mozilo_layou ... 19_Galerie .

Ergebnis ist überall das selbe, und bei funpic bekomme ich noch eine Fehlermeldung:

Warning: include(showgalall.php) [function.include]: failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/bechti/mozilo_layouts/moziloCMS/Syntax.php(534) : eval()'d code on line 1

Warning: include() [function.include]: Failed opening 'showgalall.php' for inclusion (include_path='.:') in /usr/export/www/vhosts/funnetwork/hosting/bechti/mozilo_layouts/moziloCMS/Syntax.php(534) : eval()'d code on line 1

Fatal error: Call to undefined function ShowGalPrePics() in /usr/export/www/vhosts/funnetwork/hosting/bechti/mozilo_layouts/moziloCMS/Syntax.php(534) : eval()'d code on line 1

Ich hab mir die halbe Nacht um die Ohren geschlagen, doch jetzt bin ich mit meinem Latein und meinen rudimentären php-Kenntnissen am Ende, und hoffe hier kann mir jemand helfen.

Greetz dwb
Greetz dwb

stefanbe

#14
Zitat von: "dummwiebrot"Warning: include(showgalall.php) [function.include]: failed to open stream: No such file or directory
Das sagt doch alles.
Gross Kleinschreibung beachtet, liegt die php Datei im gleichen ordner wie die Syntax.php.

gruss stefanbe