Zeitversetzte Bestenliste
Inhaltsseiten können genutzt werden, um eine Bestenliste für ein Voting anzulegen. Dort werden alle teilnehmenden Projekte mit den aktuell gesammelten Stimmen in einer absteigenden Liste angezeigt.
Maßgeblich ist dabei der Zeitpunkt der Stimmenanforderung, unabhängig davon, wann die Stimme verifiziert wurde. Das heißt, dass sich die Anzahl der Stimmen in der vorläufigen Bestenliste noch geringfügig verändern kann, wenn nach der Veröffentlichung der Liste noch Stimmen verifiziert wurden, die vor der Veröffentlichung angefragt wurden.
Beispiel einer Bestenliste
Dafür wird eine neue Seite unter Inhalt > Seiten erstellt (siehe auch “Unterseiten erstellen“)
Beispiel für eine solche Seite:
Inhalt der Seite
Die Seite kann frei gestaltet werden, aber um die Bestenliste anzuzeigen, muss bei Zugehöriges Voting das entsprechende Voting ausgewählt werden. Außerdem wird im Inhalt-Feld folgendes benötigt:
{% if page.voting %}
{% load voting_results %}
{% voting_results page.voting.slug %}
{% endif %}
Hinweis: Die Projektlistenfilter haben keine Auswirkung auf die Bestenliste.
Komplettes Beispiel für den HTML-Inhalt einer Bestenliste:
<div class="container padding-sub-pages">
<div class="row">
<div class="col-sm-6">
<h1 class="color">Bestenliste</h1>
<h2>Hier sehen Sie die aktuellen Stimmenzahlen und die erreichte Platzierung der Vereine.</h2>
</div>
</div>
</div>
<br>
<div class="container">
<legend>Die Ergebnisse</legend>
{% if page.voting %}
{% load voting_results %}
{% voting_results page.voting.slug %}
{% endif %}
</div>
Seitengröße der Liste
Es ist möglich, die Bestenliste in Seiten aufzuteilen, sodass nach einer bestimmten Anzahl an Projekten ein “Mehr Laden” Button erscheint, welchen man klicken muss, um die nächsten Projekte sichtbar zu machen.
Bestenliste mit “Mehr Laden” Button
Dazu kann im Inhalt die Seitengröße definiert werden.
Hier das Beispiel von oben so erweitert, dass immer 10 Projekte geladen werden und jeweils 10 weiter dazugeladen werden können.
<div class="container">
<legend>Die Ergebnisse</legend>
{% if page.voting %}
{% load voting_results template_utils %}
{% define 10 as page_size %}
{% voting_results page.voting.slug %}
{% endif %}
</div>
Dafür muss bei load
neben den voting_results
noch die template_utils
geladen werden. Nach define
kann eine beliebige Zahl eingegeben werden, welche als Seitengröße definiert wird (im Bsp. 10).
Zeitversetzte Bestenliste
Es ist empfehlenswert keine öffentliche aktuelle Bestenliste zu nutzen, da diese oft zu Rückfragen führt, vor allem durch Teilnehmer, die versuchen unberechtigt mehrere Stimmen abzugeben, welche teilweise nicht gezählt werden. In solchen Fällen wird die Bestenliste oft genutzt, um zu überprüfen, ob ein Abstimmversuch auch wirklich gezählt hat oder nicht.
Um dem entgegenzuwirken, bieten wir eine zeitversetzte Bestenliste, welche den Stand der Liste zu einer bestimmten Uhrzeit an einem bestimmten Wochentag darstellt.
Dazu muss die Zeile mit voting_results
durch folgendes ersetzt werden:
{% voting_results_timed page.voting.slug 'Mo' '09:00' %}
Jetzt müssen neben dem Voting noch zwei weitere Informationen ausgefüllt werden:
Der Wochentag (Mo, Tu, We, Th, Fr, Sa, Su) und die Uhrzeit (24h Format in UTC).
Es wird immer der Stand von dem Wochentag zu dieser Uhrzeit angezeigt, solange nicht mehr als ein Woche rum ist.
Das Beispiel würde jetzt eine Bestenliste zeigen mit dem Stand vom letzten Mittwoch um 10:00 Uhr (wenn Winter ist) bzw. um 11:00 Uhr (wenn Sommer ist).
Mittwoch 08:00 Uhr morgens würde noch den Stand vom Mittwoch letzter Woche zeigen. Während Mittwoch um 12:00 Uhr der Stand von vor einer Stunde gezeigt wird. Donnerstags würde immer der Stand von gestern gezeigt werden.
Hinweis zu UTC Zeiten: Um unsere Zeit in UTC umzurechnen, muss im Winter 1 Stunde bzw. im Sommer 2 Stunden abgezogen werden.
Mehrere Aktualisierungen pro Woche
Es ist auch möglich eine Bestenliste mehrfach in einer Woche zu aktualisieren. Dazu kann abhängig vom aktuellen Tag, ein bestimmter Stand der Bestenliste dargestellt werden.
{% now "D" as today %}
{% if today == 'Fr' or today == 'Sa' or today == 'Su' %}
{% voting_results_timed page.voting.slug 'Th' '18:00' %}
{% else %}
{% voting_results_timed page.voting.slug 'Mo' '07:00' %}
{% endif %}
In dem Beispiel wird Freitag, Samstag und Sonntag immer der Stand von Donnerstag um 19:00 Uhr angezeigt und von Montag bis Donnerstag der Stand von Montagmorgen.
Beispiel bei dem immer der Stand vom Vortag angezeigt wird:
{% now "D" as today %}
{% if today == 'Mo' %}
{% voting_results_timed page.voting.slug 'Su' '09:00' %}
{% elif today == 'Tu' %}
{% voting_results_timed page.voting.slug 'Mo' '09:00' %}
{% elif today == 'We' %}
{% voting_results_timed page.voting.slug 'Tu' '09:00' %}
{% elif today == 'Th' %}
{% voting_results_timed page.voting.slug 'We' '09:00' %}
{% elif today == 'Fr' %}
{% voting_results_timed page.voting.slug 'Th' '09:00' %}
{% elif today == 'Sa' %}
{% voting_results_timed page.voting.slug 'Fr' '09:00' %}
{% elif today == 'Su' %}
{% voting_results_timed page.voting.slug 'Sa' '09:00' %}
{% endif %}