Veröffentlichungsdatum: 10. August 2012
Änderungsdatum: 13. Juli 2017
listen sortierung kommentare comments filter callback
Zeigen Sie den Seitenbesuchern die Artikel Ihrer Präsenz, die zuletzt kommentiert wurden
Über das Weblic® "Kommentieren einer Seite" erlauben Sie es den Seitenbesuchern und Benutzern, einen Kommentar zu Seiten und Artikeln abzugeben. Die zuletzt kommentierten Seiten können Sie über eine Weblication® CMS Liste ausgeben, welche nach dem Datum des aktuellsten Kommentares sortiert ist.
Um dies realisieren zu können, ist eine CMS-Version ab 007.001.188.000 erforderlich und das aktuelle Listen-Element (Weblic® "Liste Standard"). Die erforderlichen Anpassungen werden nachfolgend beschrieben.
Setzen Sie eine eigene Funktion über die wMyProject.php Datei, die mit der BASE mitgeliefert wird und über die pre.php des globalen Projektes eingelesen wird.
//*********************************************************************************/
/**
* @method String sortByLastComment(String $file)
*
* @description Callback Funktion, um nach den neuesten Kommentaren einer Datei zu sortieren
*
* @param file jeweilige Datei
*
* @return String
*
*
*/
//*********************************************************************************/
public static function sortByLastComment($file){
// Ermittelt die Bewertung der jeweiligen Seite, um danach sortieren zu können
$dateLastComment = wUserContent::getDateLastComment($file);
//print $file.":".$dateLastComment."<br />";
return $dateLastComment;
}
Über die Projektkonfiguration verweisen Sie auf diese Funktion als zusätzliche Sortiermöglichkeit in Listen. Sofern diese Variableneinträge in der Projektkonfiguration in Ihrem Projekt nicht vorhanden sind, tragen Sie diese gem. der aktuellen BASE nach.
Im Beispiel werden folgende Werte gesetzt:
Über ein aktuelles Listen-Element steht Ihnen diese Auswahl somit in der "Sortieren nach" Auswahlbox zur Verfügung:
Zusätzlich setzen Sie bei dieser Liste den Filter, der nur Seiten anzeigt, die Kommentare enthalten (siehe Screenshot oben).
Die aufzulistenden Dateien, die Kommentare enthalten, werden so nach dem letzten Zeitpunkt eines Kommentares (aufsteigend oder absteigend) sortiert:
Die oben ersichtliche Listenausgabe setzt auf ein separates Darstellungstemplate der Liste auf, das zusätzlich das Datum des letzten Kommentares der jeweiligen Seite schon direkt in der Listenübersicht anzeigt. Zusätzlich wird auch die Gesamt-Anzahl der Kommentare einer Seite ausgelesen und angezeigt.
Nachfolgend der entsprechende Auszug aus diesem Zeilentemplate.
... <xsl:choose> <!-- Darstellung einer Meldung --> <xsl:when test="wd:extension/wd:object[@type = 'news']"> <h2 class="listEntryTitle"><xsl:if test="not(wd:extension/wd:object/wd:data[@id = 'hidePublicationDate'] = '1')"><span class="listEntryDate"><xsl:value-of select="php:functionString('wDate::formatDate', 'd.m.Y', wd:extension/wd:meta/wd:publication/@time)"/></span> </xsl:if><xsl:choose><xsl:when test="not(wd:extension/wd:object/wd:data[@id = 'showOnlyTeaser'] = '1')"><a href="{$linkDetails}"><xsl:value-of select="wd:extension/wd:meta/wd:title/text()"/></a></xsl:when><xsl:otherwise><xsl:value-of select="wd:extension/wd:meta/wd:title/text()"/></xsl:otherwise></xsl:choose></h2> <xsl:if test="not(/wFilelist/wData/data[@name = 'showThumbnails']/text() = '0')"> <wsl:thumbnail class="listEntryThumbnail" cut="{wd:extension/wd:meta/wd:thumbnail/@area}" src="{$thumbnail}" width="{$widthThumbnails}" height="{$heightThumbnails}" quality="{$qualityThumbnails}" mode="default" alt="{php:functionString('htmlspecialchars', wd:extension/wd:meta/wd:title/text())}"/> </xsl:if> <p class="listEntryDescription"><xsl:value-of select="wd:extension/wd:meta/wd:description/text()"/> </p> <p style="color:#666666;font-size:10px;clear:left;margin:12px 0 0 0"> <wsl:php> $documentPath = '<xsl:value-of select="@path"/>'; $dateLastComment = date('d.m.Y', strtotime(wUserContent::getDateLastComment($documentPath))); $dateTimeLastComment = date('H:i', strtotime(wUserContent::getDateLastComment($documentPath))); <![CDATA[ // Datumsausgabe des letzten Kommentares zu aufgelisteten Dateien und Anzahl an Kommentaren je Datei ausgeben: print 'Letzter Kommentar: '.$dateLastComment.', '.$dateTimeLastComment.' Uhr (von insgesamt: '.wUserContent::getNumberComments($documentPath).')'; //} ]]> </wsl:php> </p> </xsl:when> ...
Für das Auslesen der Dateien der aufzulistenenden Verzeichnisse wird auf den Verzeichnisindex dieser Verzeichnisse zurückgegriffen. Es muss daher sichergestellt sein, daß dieser für alle betroffenen Verzeichnisse auf aktuellem Stand ist, damit die Sortierung korrekt erfolgen kann!