[WBB 4.1] Farbige Thementitel in Abhängigkeit vom Alter des Themas

  • WBB 4.1

Achtung: Diese Seite ist nur noch Teil eines Archivs und wird in Zukunft entfernt.

Mal wieder war eine Anfrage im WoltLab Community Forum der Anlass für mein kleines Experiment, welches ich erfolgreich abschließen konnte.

Die Aufgabe war, innerhalb der Themenauflistung eines Forums die Thementitel je nach Alter des Themas in unterschiedlichen Farben anzuzeigen.

Es wurden folgende Vorgaben gemacht:
  • grüne Darstellung in den ersten 10 Stunden
  • gelbe Darstellung von 10 bis 24 Stunden
  • rote Darstellung über 24 Stunden
Obwohl ich weder die Zeitvorgaben noch die Farbwahl selbst so verwenden würde, werde ich die erforderlichen Änderungen anhand dieser Angaben vornehmen.

Wie fast immer bei meinen Spielereien werden wir ein Template ändern. In diesem Fall geht es um das Template threadList.

Aus dem Original:

Smarty-Template: 60

  1. {/if}
  2. <h3>
  3. {if $thread->isAnnouncement}<span class="badge badgeUpdate label">{lang}wbb.thread.announcement{/lang}</span>{/if}
  4. {if $thread->isSticky}<span class="badge label">{lang}wbb.thread.sticky{/lang}</span>{/if}
  5. {event name='badges'}
  6. {if $thread->movedThreadID}
  7. <a href="{link application='wbb' controller='Thread' object=$thread->getMovedThread()}{/link}" class="wbbTopicLink messageGroupLink" data-thread-id="{@$thread->threadID}">{$thread->topic|tableWordwrap}</a>
  8. {else}
  9. {if $thread->isNew()}
  10. <a href="{link application='wbb' controller='Thread' object=$thread}action=firstNew{/link}" class="messageGroupLink{if $thread->getBoard()->getPermission('canReadThread')} wbbTopicLink{/if}" data-thread-id="{@$thread->threadID}">{$thread->topic|tableWordwrap}</a>
  11. {else}
  12. <a href="{$thread->getLink()}" class="messageGroupLink{if $thread->getBoard()->getPermission('canReadThread')} wbbTopicLink{/if}" data-thread-id="{@$thread->threadID}">{$thread->topic|tableWordwrap}</a>
  13. {/if}
  14. {/if}
  15. </h3>
Alles anzeigen


wird:

Smarty-Template: 60

  1. {/if}
  2. {assign var=threadAge value=TIME_NOW-$thread->time}
  3. <h3>
  4. {if $thread->isAnnouncement}<span class="badge badgeUpdate label">{lang}wbb.thread.announcement{/lang}</span>{/if}
  5. {if $thread->isSticky}<span class="badge label">{lang}wbb.thread.sticky{/lang}</span>{/if}
  6. {event name='badges'}
  7. {if $thread->movedThreadID}
  8. <a href="{link application='wbb' controller='Thread' object=$thread->getMovedThread()}{/link}" class="wbbTopicLink messageGroupLink" data-thread-id="{@$thread->threadID}">{$thread->topic|tableWordwrap}</a>
  9. {else}
  10. {if $thread->isNew()}
  11. <a href="{link application='wbb' controller='Thread' object=$thread}action=firstNew{/link}" class="messageGroupLink{if $thread->getBoard()->getPermission('canReadThread')} wbbTopicLink{/if}" data-thread-id="{@$thread->threadID}">{$thread->topic|tableWordwrap}</a>
  12. {else}
  13. <a {if $threadAge<36000}style="color:green;"{/if}{if $threadAge<86400 && $threadAge>36000}style="color:yellow;"{/if}{if $threadAge>86400}style="color:red;"{/if} href="{$thread->getLink()}" class="messageGroupLink{if $thread->getBoard()->getPermission('canReadThread')} wbbTopicLink{/if}" data-thread-id="{@$thread->threadID}">{$thread->topic|tableWordwrap}</a>
  14. {/if}
  15. {/if}
  16. </h3>
Alles anzeigen


Kurz zur Erläuterung der vorgenommenen Änderungen:

In Zeile 61 definiere ich die Variable $threadAge, die aus der einfachen Subtraktion des Erstellungszeitpunktes von der aktuellen Uhrzeit errechnet wird. In Zeile 73 wird dem Thementitel in Abhängigkeit vom Alter des Themas via CSS eine Farbe zugewiesen.

Sowohl die verwendeten Zeitspannen als auch die Farben kann natürlich jeder nach seinen persönlichen Vorstellungen anpassen.

Hier als Ergänzung noch eine kleine Variation:

Der oben gezeigte Code färbt die Thementitel anhand der seit der Themenerstellung verstrichenen Zeitspanne. Soll stattdessen das Alter der letzten Antwort berücksichtigt werden, müsste die Variable $threadAge in Zeile 61 wie folgt definiert werden:

Smarty-Template: 61

  1. {assign var=threadAge value=TIME_NOW-$thread->lastPostTime}



Und nun wie immer viel Spaß beim Ausprobieren.




Gruß norse
Über den Autor
Keine Angabe

1.458 mal gelesen

Kommentare 7

  • sofix -

    Hallo norse,

    ist das für das die neue Suite auch möglich?

  • norse -

    In Zeile 73 bitte folgendes eintragen:
    <a {if $threadAge<86400}style="color:Farbe Deiner Wahl;"{/if} href="{$thread->getLink()}" class="messageGroupLink{if $thread->getBoard()->getPermission('canReadThread')} wbbTopicLink{/if}" data-thread-id="{@$thread->threadID}">{$thread->topic|tableWordwrap}

  • Skull -

    Hallo Norse!

    Ist es möglich, dass man die Beiträge nur farblich zeigt, wenn sie neu sind? Ich habe unterschiedliche Stile und hätte es am Liebsten, dass man lediglich die neuen Beiträge für einen Tag farblich markiert hätte. Danach soll es einfach standardmäßig wie im Stil vorgeschrieben sein. Ist das möglich, oder geht das wirklich nur über die 3-Farben-Variante?

  • norse -

    Es ist möglich. Ich habe die entsprechende Ergänzung oben hinzugefügt.

  • Sebastian -

    Danke Norse. Ist es auch möglich das die Farben sich nicht auf die Thread Erstellungszeit sonder auf die Zeit des letzten Postings reagieren?

  • RayAlpha -

    Danke norse

  • franzis -

    Super cool, herzlichen Dank norse