Beiträge ignorierter Benutzer ausblenden

  • WBB 4

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

Im Gegensatz zum WBB3 werden im WBB4 Forenbeiträge ignorierter Benutzer nicht mehr ausgeblendet. Da dennoch bei einigen Anwendern der Wunsch besteht, dieses Verhalten auch im WBB4 vorzufinden, habe ich es mit Hilfe zweier Templateänderungen mal "nachgerüstet".

Wir benötigen eigene Versionen der Templates thread.tpl und threadPostList.tpl.

Ich werde hier nur die erforderlichen Änderungen aufzeigen. Die grundsätzliche Verwendung eigener Templates in eigenen Templategruppen und die Zuweisung der Templategruppe zum Stil setze ich als bekannt voraus.

Es müssen folgende Änderungen vorgenommen werden:

Im Template thread.tpl wird dieser Abschnitt:

Smarty-Template: 92

  1. var $collapsedPostLoader = null;
  2. {if $board->getModeratorPermission('canReadDeletedPost')}
  3. $collapsedPostLoader = new WBB.Post.CollapsedPostLoader('.wbbPostDeleted');
  4. {/if}


durch:

[tpl=92,thread]var $collapsedPostLoader = null;
$collapsedPostLoader = new WBB.Post.CollapsedPostLoader('.wbbPostIgnored');
{if $board->getModeratorPermission('canReadDeletedPost')}
$collapsedPostLoader = new WBB.Post.CollapsedPostLoader('.wbbPostDeleted');
{/if}[/code]

ersetzt.

Im Template threadPostList.tpl ist dieser Abschnitt:

[tpl=14,threadPostList]{assign var='userProfile' value=$post->getUserProfile()}

{if ($post->isDeleted && !$thread->isDeleted) && !$showCollapsedPosts}[/code]

durch:

[tpl=14,threadPostList]{assign var='userProfile' value=$post->getUserProfile()}
{if $__wcf->getUserProfileHandler()->isIgnoredUser($userProfile->userID) && !$showCollapsedPosts && !$post->isDeleted}
<li id="post{@$post->postID}" class="marginTop">
<article class="wbbPost wbbPostIgnored message messageCollapsed jsClipboardObject{if $post->canRead()} messageCollapsedExpandable{/if}" data-object-id="{@$post->postID}" data-post-id="{@$post->postID}">
<div class="messageHeader">
<ul class="messageQuickOptions">
{if $thread->getBoard()->canEditThreads()}
<li class="jsOnly"><input type="checkbox" class="jsClipboardItem" data-object-id="{@$post->postID}" /></li>
{/if}
</ul>

<div class="box24">
{if $post->userID}
<a href="{link controller='User' object=$userProfile->getDecoratedObject()}{/link}" class="framed userLink" data-user-id="{@$post->userID}">{@$userProfile->getAvatar()->getImageTag(24)}</a>
{else}
<span class="framed">{@$userProfile->getAvatar()->getImageTag(24)}</span>
{/if}

<div>
<h1>Der Beitrag {if $post->subject} &raquo;{$post->subject}&laquo;{/if} von <a href="{link controller='User' object=$userProfile->getDecoratedObject()}{/link}" class="userLink" data-user-id="{@$post->userID}">{$userProfile->username}</a> ({@$post->time|time}) wird nicht angezeigt, da Sie den Verfasser blockieren.</h1>
<small>Zum &Ouml;ffnen des Beitrags klicken Sie bitte auf diese Hinweisbox.</small>
</div>
</div>
</div>
</article>
</li>
{else}
{if ($post->isDeleted && !$thread->isDeleted) && !$showCollapsedPosts}[/code]

zu ersetzen.


Als letzter Schritt muss nun noch in der vorletzten Zeile des Templates (also über dem schließenden {/foreach}) ein schließendes {/if} eingefügt werden.

Wichtig ist noch der Hinweis, dass diese Templateänderung nur auf die Verwendung in einem einsprachig deutsch betriebenen Forum ausgelegt ist. Wenn jemand den Effekt in einem mehrsprachig betriebenen Forum erzielen möchte, muss er anstatt des von mir direkt verwendeten Textes eine entsprechende Sprachvariable angeben und diese dann natürlich auch in allen gewünschten Sprachen anlegen und mit Inhalt füllen.

Das Resultat der Mühen sieht dann so aus:




Und nun viel Spaß beim Ausprobieren.




Gruß norse
Über den Autor
Keine Angabe

1.091 mal gelesen

Kommentare 6

  • franzis -

    Der Ausschnitt im Template threadPostList.tpl schaut nun so aus:
    {assign var='userProfile' value=$post->getUserProfile()}

    {event name='beforePost'}

    {if ($post->isDeleted && !$thread->isDeleted) && !$showCollapsedPosts}

    Aber wenn man {event name='beforePost'} auch belässt, dann funktioniert es :)

  • norse -

    Weder das eine noch das andere lassen sich mit einfachen Mitteln bewerkstelligen. Da müsste schon ein Eingriff ins Benachrichtigungssystem erfolgen, der nicht im Bereich meiner Möglichkeiten liegt.

  • oliXon -

    Danke für diese Lösung, nutze ich seit längerem schon! :)

    Ein Problem aber bleibt noch, wenn der Blockierte User den User zitiert oder mit @ "Highlightet" wird er trotzdem Benachrichtigt. Könnte man das auch gleich irgendwie deaktivieren, das der User von dem blockierten User nix mit bekommt?

  • Qvip -

    Ein sehr schönes Tutorial, konnte ich eben erfolgreich bei einem 4.1 einbauen, habe aber nichts ausgetauscht sondern deine Inhalte genommen und geschaut wo du sie eingebaut hast ;) Vielen Dank .

  • norse -

    Muss ich mir anschauen. Die Anleitung enstand auf der Basis eines WBB 4.0.

  • Nachtwind -

    Hallo norse,

    beim WBB 4.1 wird durch diese Änderung des Templates ein nachfolgend eingeblendeter Kommentar immer als "neu" markiert.

    Eine Idee wie das zu umgehen ist?