Liste aller Alben auf Coppermine-Startseite

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.

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&uuml;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.