Probleme mit einer Funktion im Userprofil

  • Ich möchte das ein User über sein Profil eine Infobox ausblenden kann.
    Das Problem ist, als Admin komme ich ins Profil, als normaler Benutzer komme ich garnicht mehr ins Profil, es geht einfach nicht auf.
    Die Infobox lässt sich auch nicht ausblenden, nur über Module komplett deaktivieren im ACP


    userOption.xml



    Das ist die Abfrage fürs Template und ich vermute da ist was falsch
    Gäste sollen diese Box nicht sehen und das funktioniert auch.


    __dkminfobox.tpl


    XML
    1. {if MODULE_DKMLOGINBOX_ACTIVE && !$__wcf->user->userID != 3 || DKM_INFOBOX_ACTIVE && !$__wcf->user->userID != 3}
    2. code
    3. {/if}
  • Weil es nichts für die Öffentlichkeit ist, ich will es nur bei mir nutzen.

  • Ok, das musst Du natürlich entscheiden. Zumindest ich sehe mich anhand der zur Verfügung gestellten Informationen außerstande, Deine Fragen zu beantworten.





    Gruß norse

  • Was du brauchst ist nicht die userOption.xml, sondern die option.xml. Abgesehen davon ist in obiger Datei auch MODULE_DKMLOGINBOX_ACTIVE nicht enthalten. Eigentlich muss es dir einen Fatal Error werfen.

  • doch ist sie in der option.xml





    userOption.xml



    userGroupOption.xml



    __dkminfobox.tpl



    XML
    1. {if MODULE_DKMLOGINBOX_ACTIVE && !$__wcf->user->userID != 3 || DKM_INFOBOX_ACTIVE && !$__wcf->user->userID != 3}
    2. code
    3. {/if}



    Ich kann über das ACP sowohl das Modul komplett deaktivieren und ich kann auch den Zugriff auf die Option das man die Box aktivieren bzw. anzeigen lassen kann deaktivieren und aktivieren.
    Was aber immer noch nicht funktioniert, wenn ich den Haken rausnehme verschwindet die Box nicht, nur wenn ich das komplette Modul übers ACP deaktiviere.

  • dein temlate code ist blödsinn, du hast hier stehen !$__wcf->user->userID != 3 was so keinen sinn ergibt.
    Ich vermute du willst im ersten fall !$__wcf->user->userID und im zweiten Fall $__wcf->user->userID != 3 haben (wobei admin an der ID fest zu legen auch blödsinn ist, da müsstest du auf ein Gruppenrecht zurückgreifen).
    Und wo bindest du den TL überhaupt ein ?

  • Der Templatecode wird über den Listener in der userinfo eingebunden. Nur registierte Benutzer sollen den sehen können. Registrierte Benutzer sollen diese Box auch deaktivieren können wenn Sie diese nicht sehen wollen. Wenn es Blödsinn ist, schreibe mir bitte wie es richtig sein soll. Dafür frage ich ja und deshalb gibts ja auch diesen Bereich hier, hoffe ich. Ich dachte Benutzergruppe 3 ist registrierte Benutzer?


    templateListener.xml


    XML
    1. <templatelistener name="infoboxDKM">
    2. <environment>user</environment>
    3. <templatename>userNotice</templatename>
    4. <eventname>userNotice</eventname>
    5. <templatecode><![CDATA[{include file='__dkmInfobox'}]]></templatecode>
    6. <nice>-20</nice>
    7. </templatelistener>


    Ich möchte Dir jetzt auch keinen Vortrag über einen freundlicheren Ton halten. Aber besser wäre doch gewesen, wenn Du geschrieben hättest das meine Version nicht zielführend ist. Wenn Du keine Lust hast mir zu helfen, dann lasse es doch einfach. Ich bin ja gewillt zu lernen.

    Einmal editiert, zuletzt von ruhrpottbobo ()

  • Ich dachte Benutzergruppe 3 ist registrierte Benutzer?


    Du fragst aber nicht nach der Benutzergruppe, sondern nach der userID, zum Anderen reicht {if $__wcf->user->userID} aus um zu prüfen, ob der User eingeloggt ist, oder nicht. Im Ergebnis würde es optimalerweise dann so aussehen:


    {if $__wcf->user->userID && MODULE_DKMLOGINBOX_ACTIVE && DKM_INFOBOX_ACTIVE}...{/if}


    Heißt:


    Wenn User eingeloggt && Modul aktiviert && Box aktiv (schön die options unnötig aufblähen...), dann tu irgendwas.

  • @ruhrpottbobo: Ich hatte mich zwar auch über Deinen Templatecode gewundert und u.a. auch deshalb nach dem kompletten Paket gefragt, um mir eine bessere Vorstellung zu machen, aber ich bin nicht einmal auf die Idee gekommen, dass der gezeigte Code eine Abfrage der GruppenId darstellen soll.


    Du selbst schriebst doch:


    Gäste sollen diese Box nicht sehen und das funktioniert auch.


    und das habe ich auch für bare Münze genommen. Ergo musste sich die korrekte Abfrage in mir nicht bekannten Teilen des Pakets verstecken.





    Gruß norse

  • Leider funktioniert es immer noch nicht wie es soll, jetzt schreibe ich mal was ich habe.
    Es sind 2 Boxen an der selben Stelle mit unterschiedlichem Inhalt. Eine für registrierte Benutzer und eine Box für Gäste.
    Das funktioniert auch alles prima mit dem oben vorgestellten Code, was immer noch nicht funktioniert ist die Funktion im Profil für registrierte Benutzer um die Box für die Benutzer zu deaktivieren.



    Die Gäste können dei ensprechende Gästebox sehen und wenn man sich einloggt ist die Gästebox weg und man sieht die andere Box. Ich versuche eine Funktion im Profil einzubauen, die registrierten Benutzer diese Box, wenn sie sie nicht shen möchten, selbst deaktivieren können.

    Einmal editiert, zuletzt von ruhrpottbobo ()

  • Du musst die Benutzerauswahl in Form von $__wcf->getUser()->getUserOption('dkm_infobox_active') in die Abfrage einbauen.





    Gruß norse

  • Genau das war der Knackpunkt, vielen Dank für Deine kompetente Hilfe, auch an alle anderen vielen Dank für die Mühe!


    So gehts


    {if $__wcf->user->userID && MODULE_DKMLOGINBOX_ACTIVE && $__wcf->getUser()->getUserOption('dkm_infobox_active')}