photoinfos.com

Coppermine Photo Gallery - Bilddatenbank

2014 / Thomas Gade

Coppermine Photo Gallery ist eine kostenlose und dennoch mächtige Bilddatenbanksoftware für Websites. Sie wurde 2003 eingeführt und wird noch immer gepflegt, auch wenn das Engagement der Entwickler etwas nachgelassen hat. Auf der Homepage von Coppermine gibt es Links zum Download und ein exzellentes Forum für Fragen.

Beim Einrichten und Konfigurieren treten diverse Probleme auf. Wir fassen zusammen, welche Fragen wir hatten und was wir geändert haben.



Welche Bilddetails werden eingeblendet?

Aus der Standardliste sollen die Punkte 'Favoriten', 'Angezeigt' und 'Dateigröße' ausgeblendet werden. Dafür ist die Datei themes.php im verwendeten Themeordner zu verändern. Es kann sein, dass zuerst aus der Datei theme.php im Ordner themes/samples der komplette Abschnitt '** Section <<<theme_html_picinfo>>> - START' in die theme.php des eigenen Themes kopiert werden muss.

Dann finde:
if ($CONFIG['picinfo_movie_download_link']) {

und füge darüber ein:

global $lang_common;
unset($info[$lang_picinfo['addFavPhrase']]);
unset($info[$lang_picinfo['Displayed']]);
unset($info[$lang_common['filesize']]);



Um die Bezeichnung der entsprechenden Punkte zu finden, sucht man in seiner Sprachdatei, in unserem Fall 'lang/german.php', danach. Möchte man die Zeile 'IPTC Stichworte' ausblenden, wird dieser Vemerk gefunden: $lang_picinfo['iptcKeywords'] = 'IPTC Stichworte';



Um die IPTC-Stichworte in der Dateibeschreibung auszublenden, fügt man im oben genannten Abschnitt diese Zeile hinzu:

unset($info[$lang_picinfo['iptcKeywords']]);

Filmstreifen ausblenden



Aus der theme.php im aktiven Themeordner werden im Abschnitt 'template_film_strip' folgende Codezeilen gelöscht:

<tr>
<td style="background-image: url({TILE1});background-repeat:repeat-x;"><img src="images/spacer.gif" width="1" height="28" alt="" border="0" /></td>
</tr>

und

<tr>
<td style="background-image: url({TILE2});background-repeat:repeat-x;"><img src="images/spacer.gif" width="1" height="28" alt="" border="0" /></td>
</tr>

Titel ausblenden



Aus der Datei sample/theme.php wird der Abschnitt 'template_display_media', falls nicht vorhanden, in die theme.php des eigenen Themes kopiert. Dann werden nur (!!) die folgenden Zeilen in diesem Abschnitt gelöscht:

<tr>
<td class="tableb tableb_alternate"><h1 class="pic_title">
{TITLE}
</h1></td>
</tr>



Ansicht mit weniger Dekorationen und überflüssigen Details. Man kann noch mehr rausschmeißen, beispielsweise die Zeile 'Datei-Informationen'. Anschließend kann die darüberliegende 'Bildbeschreibung' passend zur Ausrichtung des darunterliegenden Textes nach links verschoben werden. Dies geschieht über die Datei themes\'eigener Style'\style.css.

Entrümpeln der Navigationsleiste

Beseitigen des Buttons 'diashow'.
In der theme.php werden folgende Zeilen gelöscht:
<!-- BEGIN slideshow_button -->
<!-- button will be added by displayimage.js -->
<td id="slideshow_button" align="center" valign="middle" class="navmenu" width="48"></td>
<!-- END slideshow_button -->


Beseitigen des Buttons 'Datei-Informationen'.

In der theme.php werden folgende Zeilen gelöscht:

<!-- BEGIN pic_info_button -->
<!-- button will be added by displayimage.js -->
<td id="pic_info_button" align="center" valign="middle" class="navmenu" width="48"></td>
<!-- END pic_info_button -->

Beseitigen des Buttons 'E-Card'.
In der theme.php werden folgende Zeilen gelöscht:

<td align="center" valign="middle" class="navmenu" width="48"><a href="{ECARD_TGT}" class="navmenu_pic" title="{ECARD_TITLE}" rel="nofollow"><img src="{LOCATION}images/navbar/ecard.png" border="0" align="middle" alt="{ECARD_TITLE}" /></a></td>

Diese Funktion kann ev. als Anfrage für ein Bild umgebaut werden.

Albumansicht - Infos unter Thumbnails reduzieren


Zu viele Infos unter dem Bild. Wie entrümpelt man diesen Text?


Neben den Thumbnails in der Albenübersicht sehen viele Infos wie: "29 Dateien, letzte Aktualisierung am 10. Juli 2014, Album 71 mal aufgerufen"

Kopiere die Sektionen $template_album_list und $template_album_list_cat aus der theme.php im Ornder sample in die theme.php im eigenen Theme.

Dann suche in beiden Sektionen den Code: <p class="album_stat">{ALB_INFOS}<br />{ALB_HITS}</p>
Schreibe stattdessen: <p class="album_stat">{ALB_INFOS}</p>

In index.php suchst du alle Zeilen, die damit beginnen: $alb_list[$alb_idx]['album_info'] und ersetze die gesamten Zeilen jeweils durch $alb_list[$alb_idx]['album_info'] = sprintf($lang_list_albums['n_pictures'], $count);

dann suchst du weiter nach allen Zeilen die mit $alb_list[$aid]['album_info'] beginnen und ersetzt die gesamten Zeilen jeweils durch $alb_list[$aid]['album_info'] = sprintf($lang_list_albums['n_pictures'], $album['pic_count']);

Nun steht nur noch die Anzahl der Bilder und ev. der Titel bei den Thumbnails.

Um den Titel zu entfernen, muss die include/functions.inc.php modifiziert werden.

Zu ändern: functions.inc.php

Lösche folgende Zeilen (ungefähr bei 1014 bis 1016) :

if (!empty($row['title'])) {
$caption .= '<span class="thumb_title">' . $row['title'] . '</span>';
}


So sieht es danach aus.

Albenansicht anders gestalten

In der theme.php in den beiden zugefügten Sektoren kann der Bereich um die zu ändernden Codes verändert werden, um das Tebellenfeld anders zu gestalten.

Vorher haben wir mehrere <td></td> Tabellenfelder:

<td align="center" valign="middle" class="thumbnails">
<img src="images/spacer.gif" width="{THUMB_CELL_WIDTH}" height="1" style="margin-top: 0px; margin-bottom: 0px; border: none;" alt="" /><br />
<a href="{ALB_LINK_TGT}" class="albums">{ALB_LINK_PIC}<br /></a>
</td>
<td>
<img src="images/spacer.gif" width="1" height="1" border="0" alt="" />
</td>
<td width="100%" valign="top" class="">
{ADMIN_MENU}
<p>{ALB_DESC}</p>
<p class="album_stat">{ALB_INFOS}<br />{ALB_HITS}</p>
</td>


Nachher fassen wir alles in ein Feld zusammen, dessen Höhe auf 220px festgelegt wird. Der Wert passt zu Thumbnails, die in 200x200px passen:

<td align="center" valign="middle" height="220" class="thumbnails">
<img src="images/spacer.gif" width="{THUMB_CELL_WIDTH}" height="1" style="margin-top: 0px; margin-bottom: 0px; border: none;" alt="" /><br />
<a href="{ALB_LINK_TGT}" class="albums">{ALB_LINK_PIC}<br /></a>
{ADMIN_MENU}
<p>{ALB_DESC}</p>
<p class="album_stat">{ALB_INFOS}</p>
</td>



Ergebnis: Die Felder für die Thumbnails sind gleich groß. Neben dem Titel wid nur die Anzahl der Bilder genannt.

Seite springt beim Umblättern

Beim Betrachten der Bilder in Coppermine verändert sich die Positionierung der Seiten beim Umblättern in Abhängigkeit von der Größe des dargestellten Fotos. Das soll vermieden werden. Folgendes ist in die theme.php zu kopieren:


function theme_display_image($nav_menu, $picture, $votes, $pic_info, $comments, $film_strip)
{
global $CONFIG, $LINEBREAK;


$superCage = Inspekt::makeSuperCage();

$width = $CONFIG['picture_table_width'];

//echo '<a name="top_display_media"></a>'; // set the navbar-anchor
starttable();
echo $nav_menu;
endtable();

starttable();
echo $picture;
endtable();
if ($CONFIG['display_film_strip'] == 1) {
echo $film_strip;
}


echo $votes;

$picinfo = $superCage->cookie->keyExists('picinfo') ? $superCage->cookie->getAlpha('picinfo') : ($CONFIG['display_pic_info'] ? 'block' : 'none');
echo $LINEBREAK . '<div id="picinfo" style="display: '.str_replace('.gif','.png',$picinfo).';">' . $LINEBREAK;
starttable();
echo $pic_info;
endtable();
echo '</div>' . $LINEBREAK;

echo '<a name="comments_top"></a>';
echo '<div id="comments">' . $LINEBREAK;
echo $comments;
echo '</div>' . $LINEBREAK;
}

Sonderzeichen und Umlaute

Es kommt zu falschen Darstellungen von Sonderzeichen und Umlauten. Angeblich besteht dieses Problem nicht, wenn der Hoster PHP 5.4.x verwendet, das als Standardcodierung UTF-8 verwendet. PHP 5.3.x hatte als Standardcodierung ISO-8859-1 (latin1). Doch hat Coppermine 1.5.26 diesbezüglich eine Macke.

Mit einer .htaccess wird auf php5.xx umgeschaltet. Beim Hoster Sysprovide wird dazu eine .txt-Datei erzeugt und dieser Text eingetragen: AddHandler php54-fastcgi .php, um auf php5.4 umzuschalten. Die Datei wird in das Coppermineverzeichnis hochgeladen und umbenannt zu .htaccess. Sicherheitshalber schaut man in die Anleitung vom eigenen Hoster.

Zu ändern ist die Datei: include/iptc.inc.php

Suche:

$data=htmlentities(strip_tags(trim($data,"\x7f..\xff\x0..\x1f")),ENT_QUOTES); //sanitize data against sql/html injection; trim any nongraphical non-ASCII character:

und ersetze gegen:

$data=Inspekt::getEscaped(utf8_encode($data));

Ergebnislose Suche - neue Ergebnisseite aufrufen

Wenn die Suche kein Ergebnis bringt, soll anstelle der Standardseite eine andere erscheinen. In die theme.php wird folgende Funktion kopiert:

function theme_no_img_to_display($album_name)
{
header("Location: http://www.medienarchiv.com/a-archiv/search-neue-Suche.php");
}


Hinweis: Hinter Location steht die URL zur neuen Seite.

Eigener Footer - zwei Möglichkeiten

1. Möglichkeit


Zu ändernde Datei: include/themes.php

Suche:

/******************************************************************************
** Section <<<theme_credits>>> - START
******************************************************************************/

/******************************************************************************
// Function for the credits-section
In previous versions of Coppermine the "Powered by Coppermine" used to be
obfuscated to make it hard for non-coders to remove the tag. The reason behind
this was an additional license add-on that disallowed users to change the line.
The dev team has reviewed this policy for cpg1.5.x and decided that end users
ARE allowed to change or remove the line in legal terms.
HOWEVER: We have a forum policy for the support board instead: support will
only be given for galleries that show the "Powered by Coppermine" tag
unobfuscated.
Before removing the credits, please consider this as well:
Coppermine is free software, the dev team ASKS you to keep the footer intact.
We're convinced that you should give credit where credit is due. So please think
twice before you decide to remove the tag.
******************************************************************************/
function theme_credits() {
$return = <<< EOT

<div class="footer" align="center" style="padding:10px;display:block;visibility:visible; font-family: Verdana,Arial,sans-serif;">Powered by <a href="http://coppermine-gallery.net/" title="Coppermine Photo Gallery" rel="external">Coppermine Photo Gallery</a></div>
EOT;
return $return;
}
/******************************************************************************
** Section <<<theme_credits>>> - END
******************************************************************************/

Ersetze gegen:

/******************************************************************************
** Section <<<theme_credits>>> - START
******************************************************************************/

function theme_credits() {
$return = <<< EOT

<div class="footer"> </div>
EOT;
return $return;
}
/******************************************************************************
** Section <<<theme_credits>>> - END
******************************************************************************/

2. Möglichkeit


Man fügt einfach in die template.htm die Codezeilen für einen Footer über dem </body> Tag ein.
Hat man dort bereits einen Trackingcode integriert, wird der Code für den Footer zwischen dem Trackingcode und dem Ende des Coppermine Codes eingefügt. Der Coppermine-eigene Footer kann aus der template.html gelöscht werden. Das sind diese Zeilen:

<div id="cpg_footer_block_outer">
<div class="cpg_footer_block_inner">
{CUSTOM_FOOTER}
{CREDITS}
</div>
</div>

IPTC neu einlesen

Um dies zu tun, muss die util.php geändert werden. Suche:

<input type="radio" name="updatetype" id="updatetype6" value="5" class="nobg" /><label for="updatetype6" class="clickable_option">'.$lang_util_php['update_full_normal_thumb'].'</label><hr />

und ersetze gegen:

<input type="radio" name="updatetype" id="updatetype6" value="5" class="nobg" /><label for="updatetype6" class="clickable_option">'.$lang_util_php['update_full_normal_thumb'].'</label><br />
<input type="radio" name="updatetype" id="updatetype7" value="6" class="nobg" /><label for="updatetype7" class="clickable_option">IPTC</label><hr />


Suche:

$query_up = "UPDATE {$CONFIG['TABLE_PICTURES']} SET pwidth = '{$imagesize[0]}', pheight = '{$imagesize[1]}' WHERE pid = {$row['pid']}";

und ersetze gegen:

if ($updatetype == 6 && $CONFIG['read_iptc_data']) {
                echo '<tr><td class="'.$tablestyle.'">' . $icon_array['ok'] . '<tt>' . $image .'</tt> '. $lang_util_php['updated_successfully'] . '!</td></tr>';
                include_once("include/iptc.inc.php");
                $iptc = get_IPTC($image);
                $title = (isset($iptc['Headline'])) ? $iptc['Headline'] : '';
                $caption = (isset($iptc['Caption'])) ? $iptc['Caption'] : '';
                $keywords = (isset($iptc['Keywords'])) ? implode($CONFIG['keyword_separator'], $iptc['Keywords']) : '';
                $query_up = "UPDATE {$CONFIG['TABLE_PICTURES']} SET title = '{$title}', caption = '{$caption}', keywords = '{$keywords}' WHERE pid = {$row['pid']}";
            } else {
                $query_up = "UPDATE {$CONFIG['TABLE_PICTURES']} SET pwidth = '{$imagesize[0]}', pheight = '{$imagesize[1]}' WHERE pid = {$row['pid']}";
            }


Die Möglichkeit zum neuen Einlesen der IPTC Infos findet man als Unterpunkt unter der ersten Option in den Admin Tools.



Redirect nach dem Löschen von Bildern

Die Suchmaschinen verweisen nach dem Löschen von Bildern auf Seiten, die es nicht mehr gibt. In dem Fall soll eine eine automatische Umleitung auf die Startseite oder einer außerhalb liegende HTML-Seite zustande kommen, beispielsweise zur Seite 'http://www.medienarchiv.com/fehler.htm'.

Finde in displayimage.php:

cpg_die(ERROR, $lang_errors['non_exist_ap'], __FILE__, __LINE__);


und ersetze gegen

header("Location: http://www.medienarchiv.com/fehler.htm");


Bilder verkaufen - Shopsystem

Dafür gibt es das Plugin cpgShop. Siehe hier: http://forum.coppermine-gallery.net/index.php?topic=67506.0
Im ersten Beitrag gibt es den Downloadlink zur aktuellsten Version.
Unser Tipp: Überflüssig, weil eine Vermarktung über andere Plattformen besser machbar ist, beispielsweise hier: fotograf.de
Am besten präsentiert man viele Fotos mit Coppermine und legt sich zusätzlich einen Account bei fotograf.de an. Dort werden Produkte aktiviert und bei Bedarf kann man Bilder, die jemand auf Tassen, als Ausdruck oder sonstwie haben möchte, dort hochladen und die Bestellung darüber laufen lassen. Ein eigener Shop ist nicht aus rechtlichen Gründen und wegen der Produkthaftung immer riskant. Bei fotograf.de kooperiert man mit verantwortlichen Dienstleistern.

Bildbeschreibung (Caption) nicht mehr fett anzeigen und das Wort 'Beschreibung:' fett voranstellen.

In der theme.php wird im '$template_display_media' der Code von <!-- BEGIN caption --> bis <!-- END caption --> ausgetauscht. Dort soll stehen:

<!-- BEGIN caption -->
<tr>
<td align="left" class="tableb tableb_alternate"><strong>Beschreibung: </strong>
{CAPTION}
</td>
</tr>
<!-- END caption -->

Zeile 'Datei-Information' löschen

In der theme.php wird unter 'theme_html_picinfo' folgender Code gelöscht:

$html .= ' <tr><td colspan="2" class="tableh2">'.$lang_picinfo['title'].'</td></tr>' . $LINEBREAK;


Zeilen mit Bildinfos anders formatieren

In der theme.php wird unter ' theme_html_picinfo' dieser Code gesucht:

$html .= ' <tr><td colspan="2" class="tableh2">'.$lang_picinfo['title'].'</td></tr>' . $LINEBREAK;
$template = ' <tr><td class="tableb tableb_alternate" valign="top" >%s:</td><td class="tableb tableb_alternate">%s</td></tr>' . $LINEBREAK;
foreach ($info as $key => $value) {
$html .= sprintf($template, $key, $value);
}

Und gegen diese Zeilen ersetzt:


$template = ' <tr><td width="20"></td> <td width="140" class="" valign="top" >%s:</td><td class="">%s</td></tr>' . $LINEBREAK;
foreach ($info as $key => $value) {
$html .= sprintf($template, $key, $value);
}

URL in den Bildinfos ausblenden

Suche in der Datei displayimage.php nach: // Create the absolute URL for display in info
Den Code eine Linie tiefer einfach auskommentieren..

Massen Import

Wenn man viele Fotos in die Bilddatenbank einfügen möchte, lädt man sie am besten per FTP in den Webspace. Dabei kann man sie in Verzeichnissen und Unterverzeichnissen lassen. Diese werden in das Verzeichnis 'album' im Installationsverzeichnis von Coppermine kopiert. Man darf aber nichts in die Ordner 'edit' und 'userpics' kopieren. Ansonsten kann nach Belieben Verzeichnisse und Unterverzeichnisse anlegen.



Die Verzeichnisstruktur soll von Coppermine übernommen werden. Das geht hervorragend mit dem Mass Import.




Beim Massenimport wird bei allen Fotos das Kommentieren und Bewerten aktiviert. Falls dies unerwünscht ist, sollte man anschließend im phpMyAdmin in der Datenbank eine Abfrage durchführen. Einzugeben ist:

UPDATE cpg15x_albums SET comments = 'NO', votes = 'NO'



© Thomas Gade   Unsere Texte und Bilder sind urheberrechtlich geschützt. Jede Nutzung ist nur mit schriftlicher Erlaubnis des Verfassers gestattet und stets honorarpflichtig. / © Our articles and images are copyrighted.