TYPO3: Jahresarchiv mit mjseventpro Kalender

2. April 2007 | 4 Kommentare

TYPO3-LogoDie TYPO3-Extesion MJSEVENTPRO ist ein Kalender-Plugin, das auch die hohe Kunst des Archivierens beherrscht. Abgelaufene Veranstaltungen werden automatisch ein einen Archivordner verschoben, wenn man das möchte und dies im Contanst-Editor der Extension einstellt. Allerdings läßt sich ein Jahresarchiv mit der Extension nicht standardgemäß implementieren. Wie das geht, erfahren Sie hier.

Wir haben Jahresarchive mit mjseventpro gelöst, indem wir einfach für jedes Jahr einen Ordner erstellt haben. Zur Ausgabe des Jahresarchives stellt man im Plugin einfach den Jahres-Ordner als Ausgangspunkt ein. Doch wer das auch schon mal ausprobiert hat wird merken, dass sobald aktuelle Veranschtaltungen eingesehen werden, die Extension bereits abgelaufene Veranstaltungen wieder in den, mit der ArchivePID angegebenen Ordner verschiebt.

Zu Veranschaulichung, die Ordnerstruktur sieht folgendermassen aus:

Ordnerstruktur

Das Problem kommt folgendermassen zustande:

Die Veranstaltungen werden jedesmal wenn die Single View im FrontEnd aufgerufen überprüft, ob die Veranstaltung archiviert werden sollen und verschiebt sie ggf. in den angegebenen Archiv-Ordner. Dabei wird kein Unterschied gemacht, ob Sie bereits archiviert wurden. Daher werden bereits archivierte Veranstaltungen aus den Jahresordnern verschoben.

Die Lösung ist:

In der Funktion function archiveEvents($new_pid=0) von der Datei pi1/class.tx_mjseventpro_pi1.php folgende Zeile hinzu fügen:

$sql .= 'AND `pid` = '.$this->conf['formView.']['storePID'].' ';

Der Wert muss natürlich im TS gesetzt werden, z.B. über den Object Browser.

In unserem Beispiel wäre es die PID von Aktuelle Veranstaltungen. 

function archiveEvents($new_pid=0) {
    if( $new_pid ) {
        $table    = 'tx_mjseventpro';
        $sql  = 'UPDATE '.$table.' SET pid = '.$new_pid.' ';
        $sql .= 'WHERE `bdate` < UNIX_TIMESTAMP()-(60*60*24) ';
        $sql .= 'AND `edate` < UNIX_TIMESTAMP()-(60*60*24)';
        //undkonsorten: Durchsucht nur noch den Ordner
        //mit aktuellen Veranstaltungen.
        $sql .= 'AND `pid` = '.$this->conf['formView.']['storePID'].' ';mysql_query( $sql );
        $count = mysql_affected_rows();
    }
    else {
        echo '<pre>EXT: <b>mjseventpro</b>: $new_pid missing. Please
        set up <b>archivePID</b> in the TypoScript for this extension.</pre>';
        $count = FALSE;
    }
    return $count;        // Maybe later: return $archivedEventsArray;
} // archiveEvents

Ähnliche Artikel:

Meta-Daten



4 Kommentare

Auch mal Kommentieren:

Kommentar