Lesezeit im CMS Typemill per Twig hinzugefügt
Ich hab den Seiten eine ungefähre Angabe zur Lesezeit hinzugefügt. Da Blogbeiträge in Typemill auch Seiten sind, greift das überall. Und weil ich mein Wissen gern weitergebe, folgt eine Erklärung, wie ich die Lesezeit umgesetzt habe.
Lesezeit: {% set contentLength = content|striptags|length %} {{ contentLength // 1000 }} Minute(n)
{% set contentLength = content|striptags|length %} setzt meine Variable contentLength auf die Zeichenanzahl der Seite, das aus Markdown erzeugte HTML wird entfernt. (Ich könnte das auch auf das Markdown anwenden, bevor es in HTML umgewandelt wird, aber dann müsste ich per Plugin zeitlich weiter vorn eingreifen – unnötig.)
{{ contentLength // 1000 }} Minute(n) gibt die Variable und den Text „ Minute(n)“ aus, nachdem ich die Zeichenlänge durch 1.000 geteilt habe. 1.000 Zeichen ergibt sich aus durchschnittlich 200 gelesenen Wörtern pro Minute bei einer durchschnittlichen Wortlänge von 5 Zeichen.
Ist die errechnete Zeichenzahl kleiner als 1.000 (weil bei der Division mit // auf die nächste volle Zahl abgerundet wird – finde ich besser als Kommazahlen), ist der Ausstoß „0 Minute(n)“, was ich als Information ungünstig finde. Um das abzufangen, hab ich per if-else eingebaut:
Lesezeit: {% set contentLength = content|striptags|length %}
{% if contentLength < 1000 %}
weniger als 1 Minute
{% else %}
{{ contentLength // 1000 }} Minute(n)</span>
{% endif %}
Ich hab obigen Code in die Twig-Datei page.twig des aktiven Themes platziert. Direkt über der Ausgabe des Seiteninhalts {{ content }} bietet sich an oder in das Kleingedruckte, wo auch das Aktualisierungsdatum und die Autorenperson stehen. Wer es auch in der Übersicht der Blogbeiträge haben möchte, fügt den Kram in die Datei posts.twig im Ordner partials ein.
Ich bin kein großer Programmierer, aber das hat Spaß gemacht! Mit der Templating-Sprache Twig und deren Filtern lässt sich auch als Frontend-Mensch einiges erledigen – cool. Ich bin ein bisschen angefixt.