Benutzerprofilfeld: Icon statt Text anzeigen

  • Hallo liebe Community.
    Ich hätte da eine Frage.


    Ich habe ein Benutzerprofil Feld erstellt wo Benutzer als "Select" 5 Möglichkeiten auswählen können. In diesem Feld können Benutzer eine Rasse wählen wie z.B: Mensch, Ork etc.
    Es wäre natürlich schöner, dass anstatt dem Text ein Icon zu eben dieser Rasse im Forum angezeigt wird. D.h wenn der Benutzer Mensch wählt, soll im Forum aber das Mensch Icon angezeigt werden anstatt der Text.


    Nun habe ich gesehen man kann eine "PHP-Klasse für Ausgabe" schreiben die wohl genau für dieses Szenario gedacht ist.
    Da ich leider überhaupt nicht aus der PHP Schiene komme und ledglich paar Sachen verändern kann wollte ich fragen ob ihr eine Idee habt wie man das ganze umsetzen könnte?
    Warscheinlich sinds mehrere If Fragen in der PHP die überprüfen wenn Mensch dann Ausgabe Icon?


    Als Auswahlsmöglichkeiten kann ich über HTML oder BBCode das Bild aufjeden Fall nicht einfügen.


    Vielleicht kann mir ja einer weiterhelfen.


    Vielen Dank!
    Juan

  • schau dir mal meine profilfeld-plugins an (siehe sigantur). nimm dir eins und bau es dir um :)
    statt den FA-icons wirst du natürlich eigene icons benutzen müssen.


    wenn du nicht weiter kommst, kannst du mir auch genau erklären, wie du das haben willst, dann bastel ich dir sowas. ich muss aber erstmal mein kennzeichen-plugin fertig bekommen.


    rené

  • Hey René.
    Besten Dank für deine Antwort.
    Eigentlich ist das ganze relativ Simpel hier paar Screenshots:


    1. User wählen bei der Registrieung Charname, Rasse und Gilde.
    [Blocked Image: http://starbounders.de/images/reg.PNG]
    2. Die Informationen werden bei jedem Beitrag unter dem Avartar angezeigt.
    [Blocked Image: http://starbounders.de/images/user.PNG]


    3. Man sieht sie auch im "Über mich" Bereich auf der eigenen Profil Seite.
    [Blocked Image: http://starbounders.de/images/aboutme.PNG]


    Nun soll eigentlich nur anstatt das Wort was man bei der Rasse auswählen konnte (im Screenshot "Mensch") ein Icon zu sehen sein. Name und Gilde soll man natürlich weiterhin so sehen wie bisher aber es ist schöner für die Rasse, weil es ja nur X feste gibt, feste Icons zu haben.
    Dabei wäre es natürlich am coolsten wenn man in der Select Box den Text sieht und man die Icons dann nur in den Beiträgen unter dem Avartar und in der Profil Seite sieht. Oder man sieht in der Select Box Text mit Icon. Das geht auch.


    Hoffe das ist klarer geworden.


    MFG
    Juan

  • so ... mein kennzeichen ist soweit fertig.


    du brauchst natürlich erstmal die drei icons haben, die folgendermaßen aussehen sollten: Mensch.png, die anderen beiden dann natürlich anders - aber genau so, wie sie im profil angegeben werden können.
    dann kopierst du diese drei grafiken nach wcf/images/


    die angehangene datei entpackst du bitte (die sollte dann so heißen -> RasseUserOptionOutput.class.php) und kopierst sie nach wcf/lib/system/option/user/


    in den einstellungen der benutzerprofilfeldes gibst du dann als klasse folgendes ein wcf\system\option\user\RasseUserOptionOutput


    getestet habe ich das jetzt nicht, aber das sollte klappen.


    rené

  • Danke dir Renegate!
    Ich musste einige Einstellungen noch vornehmen damit der Code funktioniert aber am Ende hats wunderbar geklappt.


    So fehlte folgender Import:

    Code
    use wcf\system\WCF;


    Außerdem hat das alt="" Probleme in der Grafikverlinkungen bereitet weshalb ich es entfernt habe.


    MFG
    Juan

  • ja klar ... nach dem png fehlt noch ein " :sleeping:
    du kannst das alt="" also wieder rein machen, sonst ist es nicht valide.


    aber schön, dass es sonst klappt.


    rené

  • Hallo Rene,
    sorry dass ich den Beitrag mal wieder rauskrame, aber mit der neuen Board Version habe ich ein Problem.
    Ich habe gestern das WBB frisch in der neusten Version installiert. Verwende die gleiche PHP Datei und habe diese auch wie gehabt hochgeladen.


    Nun bekomme ich immer nach "Absenden" im Benutzerprofil Feld wenn ich dort die PHP Klasse unter "PHP-Klasse für Ausgabe" eingebe, ein leeres weißes Fenster. Das WBB speichert anscheinend nichts ab gibt mir aber auch keine Fehlermeldung.
    Eingegeben habe ich wcf\system\option\user\RasseUserOptionOutput (Datei befindet sich in wcf/lib/system/option/user/), denn wenn ich woanders hinverlinke sagt mir dass Board dass es die Klasse nicht findet, nachdem ich auf Absenden gedrückt habe.


    Die Bilder sind auch alle im richtigen Verzeichnis.


    Die Klasse habe ich angehängt.
    Eine Idee warum der Spaß nun nicht mehr geht? Bin ziemlich am verzweifeln.
    Wenn ich nur die Klasse ohne Select Auswahlpunkte eingebe gehts. Wenn ich nur Selects ohne Klasse eingebe auch. Sobald beides drin ist geht nach Absenden gar nichts...


    Besten dank!


    Update:
    Ok ein Blick in die Apache Logs des Servers gaben mir das hier:
    Sun Feb 01 13:06:34.111749 2015] [fcgid:warn] [pid 8383] [client 95.222.30.222:37453] mod_fcgid: stderr: PHP Fatal error: Namespace declaration statement has to be the very first statement in the script in /var/www/vhosts/MEINESEITE/httpdocs/board/wcf/lib/system/option/user/RasseUserOptionOutput.class.php on line 2, referer: http://MEINESEITE/board/acp/index.php/UserOptionEdit/31/?

  • Schon komisch. Ich kann dir auch nicht sagen, woran das liegt. Andere Profilfeld-Plugins haben den gleichen Namespace-Eintrag und diese funktionieren.


    Vielleicht kann sich das mal wer anders ansehen, wo da der Fehler ist.

    Wenn ich nur die Klasse ohne Select Auswahlpunkte eingebe gehts

    Bei mir kommt selbst dann der Fehler :(


    René

  • Habe den Fehler gefunden.
    Es lag wohl an der Encodierung und an irgendeinem versteckten Whitespace.
    Durch die Encodierung "UTF-8 without BOM" im Notepad++ hat die File danach funtkioniert.


    Sorry nochmal für diesen eher dummen Fehler ;)
    Danke nochmal Rene für das sehr schnelle Feedback!


    In Zukunft wollte ich das ganze vielleicht anpassen indem man Werte aus einer anderen Datenbank liest, aber da würde ich mich dann irgendwann nochmal melden ;)

  • Hallo!


    Mal eine Frage, wenn man die Variante verwendet, wo die Ausgabe verändert oder durch etwas anderes ersetzt wird, geht das zu Lasten der Performance oder fällt das nicht ins Gewicht?


    Gruß, Thomas

  • Der Effekt dürfte zu vernachlässigen sein.





    Gruß norse

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

  • Wie immer vielen Dank für die schnelle Info :thumbup:


    Gruß, Thomas

  • Wäre es eventuell besser wenn ich die Ausgabe über das im Template messageSidebar per if-Bereich regele? Also wenn Profilfeld XY, dann gib folgendes aus...


    Es geht nur um die Ausgabe in den Beiträgen.


    Gruß, Thomas

  • Frage hat sich erledigt. Klappt wunderbar!


    Gruß, Thomas

  • Ich möchte mich hier frecherweise auch einmal einklicken :) Ich nutze gerade auch deine Funktion von oben @renegate98 habe allerdings Probleme mit dem return. Ich nutze die multiselect Auswahlmethode und möchte dementsprechend mehrere Bilder ausgeben - return ist da wahrscheinlich das falsche für.


    Derweil sieht die Funktion so aus, was mir jetzt einfallen würde, wäre das return spontan durch ein echo zu ersetzen, was aber nicht funktioniert hat.




    PHP
    public function getOutput(User $user, UserOption $option, $value) {
    	if (empty($value)) return '';
    
    	$value = StringUtil::encodeHTML($value);
    	$wcf = WCF::getPath('wcf');
    
    	return '<img src="'.$wcf.'images/gameIcons/'.$value.'.png" alt="" title="'.$value.'" class="jsTooltip" height="16" width="16" />';
    }

    Beispiel: Wähle ich nun zwei Spiele aus, bekomme als Dateinamen Spiel 1 Spiel 2.png, gleiches gilt für den Titel - aber wieso?
    Ich bitte um Hilfe :rolleyes:

  • Du willst mehrere Bilder anzeigen lassen. Du hast aber den Output nur auf ein einziges ausgelegt.


    $value enthält alle gewählten Optionen, eine pro Zeile (\n ist Trenner).


    Du musst also $value splitten und darüber iterieren, und dann auch mehrere Bilder ausgeben,

    "A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP" — Leonard Nimoy

  • Okay, wenn ich dich richtig verstanden habe, dann müsste das ganze doch jetzt so aussehen, oder?



Participate now!

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