Gallery2
Dieses Howto zeigt, wie man die bekannte Gallery2 in Redaxo funktionell und visuell einbetten kann. Diese Art der Integration, hat allerdings den Nachteil, dass die Gallery über zwei URLs erreichbar sein wird, einmal übers Redaxo und einmal direkt.
Dieses Tutorial ist nicht so speziell auf Redaxo getrimmt, man kann es ohne weiteres auch für andere CMS oder eigene Designs einsetzen.
Die Gallery sollte erstmal richtig installiert und über eine URL erreichbar sein. Die Installation ist eigentlich selbsterklärend, wer noch Probleme hat, kann in der Gallery2-Dokumentation nachschlagen.
Hier die Schritt für Schritt Erklärung zur Integration der Gallery in Redaxo.
-
Zuerst erstellt man ein Template in Redaxo. Und fügt folgendes ein.
Konfiguration der Gallery, man muss 3 Variablen anpassen.
"$g2_Config['path']" ist der Pfad über den der Server die Gallery ansteuern kann, in diesem Verzeichnis liegt auch die embed.php.
"$g2_Config['g2Uri']" ist die URL über die man die Gallery erreichen kann.
"$g2_Config['embedUri']" ist die URL über die man die eingebettete Gallery erreichen kann, in "rex_getUrl(1)" ersetzt man "1" mit der Kategorie-ID in der später die Gallery erscheinen soll.1 2 3 4 5
<?php $g2_Config['path'] = '/srv/www/htdocs/gallery2/'; $g2_Config['g2Uri'] = 'http://www.example.org/gallery2/'; $g2_Config['embedUri'] = rex_getUrl(1);
-
Jetzt wird die Gallery initialisiert:
Hier gibt es nicht viel einzustellen, wenn man z.B. den Login-Link ausblenden will, sollte man diese Zeile "$gallery->setConfig('login', true);" in "$gallery->setConfig('login', false);" ändern.
Will man auf die Seitenleiste verzichten wollen, da sie relativ viel Platz einnimmt, kann man nach der Login-Config diese Zeile einfügen "$gallery->setConfig('showSidebarBlocks', false);"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
require_once( $g2_Config['path'] . 'embed.php'); if (!headers_sent()) { header('Content-Type: text/html; charset=UTF-8'); } $ret = GalleryEmbed::init(array( 'g2Uri' => $g2_Config['g2Uri'], 'embedUri' => $g2_Config['embedUri'], 'fullInit' => false, 'apiVersion' => array(1,5) )); $gallery->setConfig('login', true); // handle the G2 request $g2moddata = GalleryEmbed::handleRequest(); // show error message if isDone is not defined if (!isset($g2moddata['isDone'])) { print 'isDone is not defined, something very bad must have happened.'; exit; } // die if it was a binary data (image) request if ($g2moddata['isDone']) { exit; /* uploads module does this too */ } if ($ret) { print $ret->getAsHtml(); } ?>
-
Nun folgt das eigentliche Template, welches man auf sein eigenes Design anpassen muss, dafür muss man lediglich ein paar Dinge im HTML-Head eurer Seite ausführen.
Hier werden die nötigen CSS und Javascripts der Gallery ausgegeben. Natürlich muss man dies in sein eigenes Template einbinden.
Das kann folgendermaßen aussehen:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head> <?php list($title, $css, $javascript) = GalleryEmbed::parseHead($g2moddata['headHtml']); echo "<title>" . $title . " -- MySite</title>\n"; foreach ($css as $item) { echo $item . "\n"; } foreach ($javascript as $item) { echo $item . "\n"; } ?> <style type="text/css"> <!-- /*#gsHeader { display : none; } #gsFooter { display: none; }*/ --> </style> </head>
-
Dem Body sollte man die Klasse "gallery" zuweisen, damit die oben ausgegeben CSS's auch greifen.
Mit "echo $g2moddata['bodyHtml'];" wird die gesamte Gallery ausgegeben.1 2 3 4 5 6
<body class="gallery"> <?php echo $g2moddata['bodyHtml']; ?> </body> </html>
- Das Template speichert man ab und erstellt eine neue Kategorie mit dem Gallery-Template (nicht vergessen "rex_getUrl(1)" auf eure Kategorie-Id anzupassen.
-
Man sollte den Cookie-Pfad und Domäne im Admin der Gallery anpassen, sollte man sein Adminmenü nicht mehr erreichen, benutzt man die 2te URL, mit der man die Gallery erreichen kann ("$g2_Config['g2Uri']").
Meist reicht als Cookie-Pfad "/" und als Domäne ".example.org", das hängt allerdings von der Galleryinstallation ab. - Nicht vergessen die Kategorie Online zu stellen ;)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | <?php $g2_Config['path'] = '/srv/www/htdocs/gallery2/'; $g2_Config['g2Uri'] = 'http://www.example.org/gallery2/'; $g2_Config['embedUri'] = rex_getUrl(1); require_once( $g2_Config['path'] . 'embed.php'); if (!headers_sent()) { header('Content-Type: text/html; charset=UTF-8'); } $ret = GalleryEmbed::init(array( 'g2Uri' => $g2_Config['g2Uri'], 'embedUri' => $g2_Config['embedUri'], 'fullInit' => false, 'apiVersion' => array(1,5) )); $gallery->setConfig('login', true); // handle the G2 request $g2moddata = GalleryEmbed::handleRequest(); // show error message if isDone is not defined if (!isset($g2moddata['isDone'])) { print 'isDone is not defined, something very bad must have happened.'; exit; } // die if it was a binary data (image) request if ($g2moddata['isDone']) { exit; /* uploads module does this too */ } if ($ret) { print $ret->getAsHtml(); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <?php list($title, $css, $javascript) = GalleryEmbed::parseHead($g2moddata['headHtml']); echo "<title>" . $title . " -- MySite</title>\n"; foreach ($css as $item) { echo $item . "\n"; } foreach ($javascript as $item) { echo $item . "\n"; } ?> <style type="text/css"> <!-- /*#gsHeader { display : none; } #gsFooter { display: none; }*/ --> </style> </head> <body class="gallery"> <?php echo $g2moddata['bodyHtml']; ?> </body> </html> |
Das wars schon, es gibt noch diverse Feinheiten auf die ich nicht genauer eingehe, so kann man z.B. das Gallery-Theme und die CSS dem Template anpassen. Dokumentation zu den Gallery-Themes
Grundlage des HowTos

