User Notice dismissible

  • Guten Abend.
    Ich zeige in meinem Plugin eine User Notice mittels Template Listener an und möchte diese nun ausblendard machen. Ich habe mir nun ganz einfach gedacht, dass ich einfach ein span Element mit den entsprechenden Klassen einfüge. Das ganze scheint auch zu funktionieren, nur irgendwie taucht der Hinweis nach jedem Laden/Wechsel der Seite wieder auf. Das ganzehat doch bestimmt was mit der data-object-id zu tun, oder? Hoffe jemand kann mir da ein paar hilfreiche Tipps zu geben.

  • Na gut, mal gucken ob das hilft haha :D

    Ich füge ganz normal via Javascript ein div beim Template Listener user notice ein.

    Smarty
    <div id="adblockmessage" class="{ADBLOCKERNOTICE_STYLE}{if ADBLOCKERNOTICE_MESSAGE_DISMISS} notice noticeDismissible{/if}">{if ADBLOCKERNOTICE_MESSAGE_DISMISS}<span class="icon icon16 fa-times pointer jsDismissNoticeButton" data-object-id="17"></span>{/if}{@ADBLOCKERNOTICE_MESSAGE|language|htmlspecialchars|nl2br}</div>

    Das ganze wird optisch auch richtig angezeigt:

    Klicke ich auf das x, verschwindet der Hinweis - so wie gewollt. Wenn ich jetzt aber die Seite neu lade, oder auf eine andere Seite innerhalb meiner Webseite wechsel, erscheint der Hinweis wieder. Meine Frage ist nun, warum? Normalerweise müsste er doch ausgeblendet bleiben...

  • Ich könnte mir vorstellen, dass der Zustand "ausgeblendet" für den jeweiligen Benutzer in der DB (wcfx_notice_dismissed) gespeichert sein muss. Das dürfte bei Dir nicht der Fall sein, da es vermutlich nicht einmal einen Eintrag in wcfx_notice gibt.


    Gruß norse

    Zugang zu meinen Arbeiten und dem dazugehörigen Support bekommt Ihr bei Interesse hier und hier.

  • Woher kommt die Hardcoded-Object-ID?

    Wäre es nicht eine Lösung das ganze komplett mit dem Notice-System umzusetzen?

    Ja, das ist richtig und habe ich auch schon überlegt. Hätte da jemand ein paar Tipps, oder könnte mir ein Plugin nennen, bei dem ich mir das mal ansehen kann, wie es funktioniert?

  • Ich glaube ein Plugin mit einer Integrierten Notiz gibt es nicht.

    Wie wird der Adblocker erkannt? Kannst du dafür eine PHP-Kondition bauen oder ist das rein auf JavaScript basierend?

    Wenn rein auf JavaScript basierend musst du die Notice während der Installation mit der Script-PIP erzeugen und die ID in einer unsichtbaren (hidden) Option speichern. Das kannst du dann im Frontend mittels JS weiterverarbeiten (da musst du dir dann deinen Selektor mithilfe der versteckten Option raussuchen um an das DIV zu kommen).

    Nun müsstest du noch mit ein bisschen JavaScript sicherstellen, dass die Notiz im ACP nicht gelöscht werden kann.

    Hört sich aber, wenn ich es mal so weiter spinne, ziemlich abenteuerlich an. Wäre ein Cookie zur Ausblendung evt. eine Option? Den könntest du rein mit JavaScript verarbeiten und bräuchtest nur das entsprechende JavaScript (um)zuprogrammieren.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!