Die Standard-Startseite von Coppermine nervt, wenn man (wie ich) eh nur 1 Benutzer ist, der (gemäß Workflow) „persönliche Alben“ anlegt, um dorthin hochzuladen. Dann sieht man keine Albenliste auf der Startseite, sondern nur einen Link „User Galleries“, der auf eine weitere fast-leere Seite zeigt, auf der nur der eine Benutzer „aufgelistet“ wird (nämlich ich). Erst durch Klick auf diesen Link kommt man an die Albenliste.
In den Einstellungen (sichtbar als Admin), im Abschnitt „Ansicht Albenliste“ kann man nicht viel dagegen ausrichten, lasse ich den Shortcode catlist weg, kommt auf der Startseite gar nichts mehr.
Also habe ich eine vollständige Albenliste als Teil meines Coppermine-Plugins tksls realisiert.
- Als Demonstration hier ein Link auf meine Fotogalerie.
Kurz dazu, wie ich das Plugin angelegt habe: Im Unterverzeichnis plugins/ meiner Coppermine-Installation habe ich ein neues Verzeichnis tksls/ angelegt. Darin liegt folgende Datei configuration.php:
<?php
if (!defined('IN_COPPERMINE')) die('Not in Coppermine...');
$name = 'tk-sls.de Customizations';
$description = 'Anpassungen für meine Webseite';
$author = 'tilt@linuxfoo.de';
$version = '1.0';
$plugin_cpg_version = array('min' => '1.5');
Jetzt kann ich den Plugin-Code in der Datei codebase.php wie folgt schreiben:
<?php
if(!defined('IN_COPPERMINE')) die('Not in Coppermine...');
$thisplugin->add_filter('plugin_block','tksls_alblist');
function tksls_alblist($block) {
global $CONFIG, $matches;
if($matches[1] != 'tkslsalblist')
return $matches;
Erklärungen:
- Ich erstelle einen Block-Filter, der von der Funktion „tksls_albslist“ ausgeführt wird.
- Wenn die Funktion feststellt, dass nicht der Shortcode „tkslsalbslist“ angefordert wurde, bricht sie ab.
$result = cpg_db_query("
SELECT aid, thumb, title, pos
FROM {$CONFIG['TABLE_ALBUMS']}
ORDER BY pos
");
starttable('100%', 'Albenliste', 2);
while ($row = mysql_fetch_row($result)) {
$aid = $row[0]; $thumb = $row[1]; $title = $row[2];
Ich hole mir eine Liste aller Alben. Für die Gestaltung eines einzelenen Albumbs-Links interessieren mich die numerische AID, die PID des Thumbnails und der Titel.
Hinweis:
- Das folgende Verfahren setzt voraus, dass jedes Album ein Thumbnail eindeutig zugewiesen bekommen hat. Hat man das in den Alben-Einstellungen auf der Voreinstellung „Zuletzt hochgeladenes Bild“ belassen, ist die Spalte „thumb“ nicht gesetzt, und der folgende Code ergibt kein gültiges Thumbnail-Bild.
$result_thumb =
cpg_db_query("
SELECT filepath, filename
FROM {$CONFIG['TABLE_PICTURES']}
WHERE pid = $thumb
");
$row_thumb = mysql_fetch_row($result_thumb);
$filepath = $row_thumb[0]; $filename = $row_thumb[1];
Jetzt habe ich alle Informationen, die ich brauche, um einen Eintrag in der Albenliste auszugeben:
print '
<tr>
<td style="width: 11em; vertical-align: top; text-align: right; padding-top: 0.25em;">
<a href="thumbnails.php?album='.$aid.'">
<img src="albums/'.$filepath.'thumb_'.$filename.'">
</a>
</td>
<td style="vertical-align: middle; padding-top: 0.25em;">
<a href="thumbnails.php?album='.$aid.'">
'.$title.'
</a>
</td>
</tr>';
Wenn die Schleife beendet ist, schliesse ich die Tabelle ab und beende die Funktion:
}
endtable();
return $block;
}
Jetzt muss ich nur noch in den Admin-Einstellungen unter „Ansicht Albenliste“ den String
catlist/alblist/random,2/lastup,2
durch
tkslsalblist
ersetzen. Schon sind die für mich überflüssigen Navigationsstrukturen verschwunden.