Nextcloud (Schul-)Kalender in WordPress anzeigen
Zur Zeit der Schulschließungen habe ich ja schon darüber geschrieben, wie wir Nextcloud an der Schule nutzen, um für alle Beteiligten eine Austauschplattform zu Verfügung zu haben. Da Nextcloud neben der Dateiablage auch eine Kalenderverwaltung beinhaltet, liegt es nahe, damit auch die Schultermine an zentraler Stelle zu verwalten. Termine sind gerade auch für die Schülerinnen und Schüler sowie deren Eltern wichtig, deswegen wollten wir als Schule die Termine auch auf der Homepage angezeigt haben. Wie das mit Nextcloud und WordPress geht, zeige ich in diesem Artikel.
Vorarbeiten in der Nextcloud
Wir haben in unserer Nextcloud mehrere Kalender angelegt, die teilweise öffentlich, teilweise aber auch nur intern genutzt werden sollen:

Über das Freigabesymbol, das bei einem neu angelegten Kalender standardmäßig grau erscheint, kann man festlegen, ob der Kalender über einen Link geteilt werden soll (öffentlich) oder nur mit Benutzern innerhalb der Nextcloud (privat). Hier als Beispiel unser Schulkalender:

Der Kalender ist mit Nutzergruppen innerhalb der Nextcloud geteilt: Mitglieder der Gruppe Lehrkräfte können den Kalender nur lesen, Mitglieder der Gruppe Leitung können ihn bearbeiten, also neue Termin einpflegen oder bestehende Termine verändern. Zusätzlich ist der Kalender öffentlich geteilt über den Punkt “Link teilen”. Damit kann man den Kalender auch öffentlich verfügbar machen, z.B. über seine Schulhomepage. Dazu benötigt man den Abonnements-Link den man in die Zwischenablage kopieren kann, wenn man auf das Menu bei “Link teilen” klickt.

Umsetzung in WordPress
Mit diesem Link kann man nun jede beliebige Software verwenden, die CalDav versteht, um die Kalenderdaten anzuzeigen. Da wir gerade unsere Homepage mit WordPress neu aufsetzen, demonstriere ich den Vorgang mit dem für WordPress verfügbaren Plugin ICS Calendar. Das Plugin ist sehr puristisch gehalten, verfügt aber über viele Möglichkeiten, das Aussehen der Anzeige zu verändern. Die Free-Version ist für viele Schulen bestimmt ausreichend, wer mehr möchte kann sich die Pro-Version kaufen.
Ist das Plugin installiert, kann man innerhalb einer Seite mit der Eingabe von
[ics_calendar url="Abonnenment-Link"]
den Kalender im Monatsformat anzeigen lassen. Innnerhalb der Anführungszeichen muss dann natürlich der vorhin kopierte Abonnement-Link eingefügt werden. Damit wäre die Anzeige bereits möglich, allerdings gibt es noch mehr Optionen, die man nutzen kann, um die Anzeige zu verbessern.
Mehrere Kalender (bei uns sind es im Moment vier) kann man in einer Übersicht anzeigen lassen, in dem man sie innerhalb der Anführungszeichen per Leerzeichen oder | getrennt eingibt, also
[ics_calendar url="Abonnenment-Link1 Abonnenment-Link2 ..."]
Zusätzlich kann man jeden Kalender mit einer Farbe darstellen lassen, sodass man die Kalendereinträge auch optisch gut unterscheiden kann. Leider ist mir keine einfache Möglichkeit bekannt die Farben der Nextcloud-Kalender zu übernehmen, so dass man sie manuell aus der Nextcloud einmal übertragen muss, wenn man die gleiche Farbe haben möchte. Den Eintrag ergänzt man dann um die Farben in Hex-Schreibweise
[ics_calendar url="Abonnenment-Link1 Abonnenment-Link2 ..."
color="#0040ff #ff0000 ..."]
Eine weitere Option ist die Änderung der Bezeichnungen der Kalender, da die Abonnement-Links meistens den Nutzernamen des Kalenderbesitzers mitschicken. Dafür gibt es die Option feedlabel, bei der man wie vorher auch bei den Farben und Urls die Bezeichnungen in der richtigen Reihenfolge angibt.
[ics_calendar url="Abonnenment-Link1 Abonnenment-Link2 ..."
color="#0040ff #ff0000 ..."
feedlabel="Termine für Alle|Unterstufe|Mittelstufe|Oberstufe"]
Damit hat man im Prinzip eine funktionierende Ansicht für die Schulhomepage, kann aber natürlich noch die Möglichkeiten von dem Plugin nutzen, wie z.B. standardmäßige Wochen- oder Listenansicht, Anzeige von Start- und Endzeit eines Termins, usw.
Alle diese Möglichkeiten sind in der Plugin-Ansicht innerhalb des WordPress-Backends erlläutert, so dass man dort nachlesen sollte. Wem die Optionen nicht reichen, kann sogar eine Pro-Version kaufen, die weitere Einstellungen bietet.
So sieht im Moment unsere Konfiguration aus, die Abonnement-Links habe ich aus Gründen der Übersicht gekürzt
[ics_calendar url="Link1 Link2 Link3 Link4"
title="false"
color="#0040ff #ff0000 #ffff00 #11924f"
feedlabel="Termine für Alle|Unterstufe|Mittelstufe|Oberstufe" showendtimes="true"
hidealldayindicator="true"
legendinline="true"]
Und so sieht das Ganze dann in der Umsetzung aus:
Januar 2023
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---|---|---|---|---|---|---|
Sonntag 1. Januar
|
||||||
Montag 2. Januar
|
Dienstag 3. Januar
|
Mittwoch 4. Januar
|
Donnerstag 5. Januar
|
Freitag 6. Januar
|
Samstag 7. Januar
|
Sonntag 8. Januar
|
Montag 9. Januar
|
Dienstag 10. Januar
|
Mittwoch 11. Januar
|
Donnerstag 12. Januar
|
Freitag 13. Januar
|
Samstag 14. Januar
|
Sonntag 15. Januar
|
Montag 16. Januar
|
Dienstag 17. Januar
|
Mittwoch 18. Januar
|
Donnerstag 19. Januar
|
Freitag 20. Januar
|
Samstag 21. Januar
|
Sonntag 22. Januar
|
Montag 23. Januar
|
Dienstag 24. Januar
|
Mittwoch 25. Januar
|
Donnerstag 26. Januar
|
Freitag 27. Januar
|
Samstag 28. Januar
|
Sonntag 29. Januar
|
Montag 30. Januar
|
Dienstag 31. Januar
|
Februar 2023
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---|---|---|---|---|---|---|
Mittwoch 1. Februar
|
Donnerstag 2. Februar
|
Freitag 3. Februar
|
Samstag 4. Februar
|
Sonntag 5. Februar
|
||
Montag 6. Februar
|
Dienstag 7. Februar
|
Mittwoch 8. Februar
|
Donnerstag 9. Februar
|
Freitag 10. Februar
|
Samstag 11. Februar
|
Sonntag 12. Februar
|
Montag 13. Februar
|
Dienstag 14. Februar
|
Mittwoch 15. Februar
|
Donnerstag 16. Februar
|
Freitag 17. Februar
|
Samstag 18. Februar
|
Sonntag 19. Februar
|
Montag 20. Februar
|
Dienstag 21. Februar
|
Mittwoch 22. Februar
|
Donnerstag 23. Februar
|
Freitag 24. Februar
|
Samstag 25. Februar
|
Sonntag 26. Februar
|
Montag 27. Februar
|
Dienstag 28. Februar
|
März 2023
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---|---|---|---|---|---|---|
Mittwoch 1. März
|
Donnerstag 2. März
|
Freitag 3. März
|
Samstag 4. März
|
Sonntag 5. März
|
||
Montag 6. März
|
Dienstag 7. März
|
Mittwoch 8. März
|
Donnerstag 9. März
|
Freitag 10. März
|
Samstag 11. März
|
Sonntag 12. März
|
Montag 13. März
|
Dienstag 14. März
|
Mittwoch 15. März
|
Donnerstag 16. März
|
Freitag 17. März
|
Samstag 18. März
|
Sonntag 19. März
|
Montag 20. März
|
Dienstag 21. März
|
Mittwoch 22. März
|
Donnerstag 23. März
|
Freitag 24. März
|
Samstag 25. März
|
Sonntag 26. März
|
Montag 27. März
|
Dienstag 28. März
|
Mittwoch 29. März
|
Donnerstag 30. März
|
Freitag 31. März
|
April 2023
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---|---|---|---|---|---|---|
Samstag 1. April
|
Sonntag 2. April
|
|||||
Montag 3. April
|
Dienstag 4. April
|
Mittwoch 5. April
|
Donnerstag 6. April
|
Freitag 7. April
|
Samstag 8. April
|
Sonntag 9. April
|
Montag 10. April
|
Dienstag 11. April
|
Mittwoch 12. April
|
Donnerstag 13. April
|
Freitag 14. April
|
Samstag 15. April
|
Sonntag 16. April
|
Montag 17. April
|
Dienstag 18. April
|
Mittwoch 19. April
|
Donnerstag 20. April
|
Freitag 21. April
|
Samstag 22. April
|
Sonntag 23. April
|
Montag 24. April
|
Dienstag 25. April
|
Mittwoch 26. April
|
Donnerstag 27. April
|
Freitag 28. April
|
Samstag 29. April
|
Sonntag 30. April
|
Mai 2023
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---|---|---|---|---|---|---|
Montag 1. Mai
|
Dienstag 2. Mai
|
Mittwoch 3. Mai
|
Donnerstag 4. Mai
|
Freitag 5. Mai
|
Samstag 6. Mai
|
Sonntag 7. Mai
|
Montag 8. Mai
|
Dienstag 9. Mai
|
Mittwoch 10. Mai
|
Donnerstag 11. Mai
|
Freitag 12. Mai
|
Samstag 13. Mai
|
Sonntag 14. Mai
|
Montag 15. Mai
|
Dienstag 16. Mai
|
Mittwoch 17. Mai
|
Donnerstag 18. Mai
|
Freitag 19. Mai
|
Samstag 20. Mai
|
Sonntag 21. Mai
|
Montag 22. Mai
|
Dienstag 23. Mai
|
Mittwoch 24. Mai
|
Donnerstag 25. Mai
|
Freitag 26. Mai
|
Samstag 27. Mai
|
Sonntag 28. Mai
|
Montag 29. Mai
|
Dienstag 30. Mai
|
Mittwoch 31. Mai
|
Juni 2023
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---|---|---|---|---|---|---|
Donnerstag 1. Juni
|
Freitag 2. Juni
|
Samstag 3. Juni
|
Sonntag 4. Juni
|
|||
Montag 5. Juni
|
Dienstag 6. Juni
|
Mittwoch 7. Juni
|
Donnerstag 8. Juni
|
Freitag 9. Juni
|
Samstag 10. Juni
|
Sonntag 11. Juni
|
Montag 12. Juni
|
Dienstag 13. Juni
|
Mittwoch 14. Juni
|
Donnerstag 15. Juni
|
Freitag 16. Juni
|
Samstag 17. Juni
|
Sonntag 18. Juni
|
Montag 19. Juni
|
Dienstag 20. Juni
|
Mittwoch 21. Juni
|
Donnerstag 22. Juni
|
Freitag 23. Juni
|
Samstag 24. Juni
|
Sonntag 25. Juni
|
Montag 26. Juni
|
Dienstag 27. Juni
|
Mittwoch 28. Juni
|
Donnerstag 29. Juni
|
Freitag 30. Juni
|
Juli 2023
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---|---|---|---|---|---|---|
Samstag 1. Juli
|
Sonntag 2. Juli
|
|||||
Montag 3. Juli
|
Dienstag 4. Juli
|
Mittwoch 5. Juli
|
Donnerstag 6. Juli
|
Freitag 7. Juli
|
Samstag 8. Juli
|
Sonntag 9. Juli
|
Montag 10. Juli
|
Dienstag 11. Juli
|
Mittwoch 12. Juli
|
Donnerstag 13. Juli
|
Freitag 14. Juli
|
Samstag 15. Juli
|
Sonntag 16. Juli
|
Montag 17. Juli
|
Dienstag 18. Juli
|
Mittwoch 19. Juli
|
Donnerstag 20. Juli
|
Freitag 21. Juli
|
Samstag 22. Juli
|
Sonntag 23. Juli
|
Montag 24. Juli
|
Dienstag 25. Juli
|
Mittwoch 26. Juli
|
Donnerstag 27. Juli
|
Freitag 28. Juli
|
Samstag 29. Juli
|
Sonntag 30. Juli
|
Montag 31. Juli
|
Keine Termine.
August 2023
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---|---|---|---|---|---|---|
Dienstag 1. August
|
Mittwoch 2. August
|
Donnerstag 3. August
|
Freitag 4. August
|
Samstag 5. August
|
Sonntag 6. August
|
|
Montag 7. August
|
Dienstag 8. August
|
Mittwoch 9. August
|
Donnerstag 10. August
|
Freitag 11. August
|
Samstag 12. August
|
Sonntag 13. August
|
Montag 14. August
|
Dienstag 15. August
|
Mittwoch 16. August
|
Donnerstag 17. August
|
Freitag 18. August
|
Samstag 19. August
|
Sonntag 20. August
|
Montag 21. August
|
Dienstag 22. August
|
Mittwoch 23. August
|
Donnerstag 24. August
|
Freitag 25. August
|
Samstag 26. August
|
Sonntag 27. August
|
Montag 28. August
|
Dienstag 29. August
|
Mittwoch 30. August
|
Donnerstag 31. August
|
Keine Termine.
September 2023
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---|---|---|---|---|---|---|
Freitag 1. September
|
Samstag 2. September
|
Sonntag 3. September
|
||||
Montag 4. September
|
Dienstag 5. September
|
Mittwoch 6. September
|
Donnerstag 7. September
|
Freitag 8. September
|
Samstag 9. September
|
Sonntag 10. September
|
Montag 11. September
|
Dienstag 12. September
|
Mittwoch 13. September
|
Donnerstag 14. September
|
Freitag 15. September
|
Samstag 16. September
|
Sonntag 17. September
|
Montag 18. September
|
Dienstag 19. September
|
Mittwoch 20. September
|
Donnerstag 21. September
|
Freitag 22. September
|
Samstag 23. September
|
Sonntag 24. September
|
Montag 25. September
|
Dienstag 26. September
|
Mittwoch 27. September
|
Donnerstag 28. September
|
Freitag 29. September
|
Samstag 30. September
|
Keine Termine.
Oktober 2023
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---|---|---|---|---|---|---|
Sonntag 1. Oktober
|
||||||
Montag 2. Oktober
|
Dienstag 3. Oktober
|
Mittwoch 4. Oktober
|
Donnerstag 5. Oktober
|
Freitag 6. Oktober
|
Samstag 7. Oktober
|
Sonntag 8. Oktober
|
Montag 9. Oktober
|
Dienstag 10. Oktober
|
Mittwoch 11. Oktober
|
Donnerstag 12. Oktober
|
Freitag 13. Oktober
|
Samstag 14. Oktober
|
Sonntag 15. Oktober
|
Montag 16. Oktober
|
Dienstag 17. Oktober
|
Mittwoch 18. Oktober
|
Donnerstag 19. Oktober
|
Freitag 20. Oktober
|
Samstag 21. Oktober
|
Sonntag 22. Oktober
|
Montag 23. Oktober
|
Dienstag 24. Oktober
|
Mittwoch 25. Oktober
|
Donnerstag 26. Oktober
|
Freitag 27. Oktober
|
Samstag 28. Oktober
|
Sonntag 29. Oktober
|
Montag 30. Oktober
|
Dienstag 31. Oktober
|
Keine Termine.
November 2023
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---|---|---|---|---|---|---|
Mittwoch 1. November
|
Donnerstag 2. November
|
Freitag 3. November
|
Samstag 4. November
|
Sonntag 5. November
|
||
Montag 6. November
|
Dienstag 7. November
|
Mittwoch 8. November
|
Donnerstag 9. November
|
Freitag 10. November
|
Samstag 11. November
|
Sonntag 12. November
|
Montag 13. November
|
Dienstag 14. November
|
Mittwoch 15. November
|
Donnerstag 16. November
|
Freitag 17. November
|
Samstag 18. November
|
Sonntag 19. November
|
Montag 20. November
|
Dienstag 21. November
|
Mittwoch 22. November
|
Donnerstag 23. November
|
Freitag 24. November
|
Samstag 25. November
|
Sonntag 26. November
|
Montag 27. November
|
Dienstag 28. November
|
Mittwoch 29. November
|
Donnerstag 30. November
|
Keine Termine.
Dezember 2023
Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag |
---|---|---|---|---|---|---|
Freitag 1. Dezember
|
Samstag 2. Dezember
|
Sonntag 3. Dezember
|
||||
Montag 4. Dezember
|
Dienstag 5. Dezember
|
Mittwoch 6. Dezember
|
Donnerstag 7. Dezember
|
Freitag 8. Dezember
|
Samstag 9. Dezember
|
Sonntag 10. Dezember
|
Montag 11. Dezember
|
Dienstag 12. Dezember
|
Mittwoch 13. Dezember
|
Donnerstag 14. Dezember
|
Freitag 15. Dezember
|
Samstag 16. Dezember
|
Sonntag 17. Dezember
|
Montag 18. Dezember
|
Dienstag 19. Dezember
|
Mittwoch 20. Dezember
|
Donnerstag 21. Dezember
|
Freitag 22. Dezember
|
Samstag 23. Dezember
|
Sonntag 24. Dezember
|
Montag 25. Dezember
|
Dienstag 26. Dezember
|
Mittwoch 27. Dezember
|
Donnerstag 28. Dezember
|
Freitag 29. Dezember
|
Samstag 30. Dezember
|
Sonntag 31. Dezember
|
Keine Termine.
Nächste Termine auf der Startseite
Mit der Ansicht als Liste (view=”list”) kann man auch nur eine Übersicht der kommenden Termine anzeigen lassen. Wir nutzen das auf unserer Startseite. Dazu ist folgender Eintrag notwendig:
[ics_calendar url="link1 link2 link3 .." title="Termine" description="false" view="list" count="5" showendtimes="true" hidealldayindicator="true" format="d.m.y" legendstyle="none"]
Damit werden immer die nächsten 5 (count=”5″) anstehenden Termine aus den angegebenen Kalendern angezeigt. Die weiteren Parameter beeinflussen die Anzeige mit Datumsformat und Deaktivierung von Legende und Beschreibung, so dass nur die Termintitel dargestellt werden.

Eine Übersicht über alle möglichen Parameter findet man auf der Seite der Software selbst:
https://icscalendar.com/icsdocs/
Unseren fertigen Kalender findet man unter https://humboldtgymnasium-solingen.de/kalender/ und die Übersicht auf der Startseite.