WCF2: Benutzer-Einstellungen für die eigene Seite

  • WCF 2

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

Möchte man seinen Benutzern die Möglichkeit geben, etwas im eigenen Plugin einzustellen, so geht das ganz einfach mit den entsprechenden Einstellungen, die sich im eigenen Benutzerprofil befinden. Auch hier gibt es in Community Framework eine einfache Möglichkeit, diese hinzuzufügen. Genauer gibt es dafür die userOption.xml.

Diese sieht für die Beispielseite bei mir folgendermaßen aus:

XML-Quellcode

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/userOption.xsd">
  3. <import>
  4. <options>
  5. <option name="examplePageNumber">
  6. <categoryname>settings.general.appearance</categoryname>
  7. <optiontype>select</optiontype>
  8. <editable>3</editable>
  9. <defaultvalue>30</defaultvalue>
  10. <selectoptions><![CDATA[10
  11. 20
  12. 30]]></selectoptions>
  13. </option>
  14. </options>
  15. </import>
  16. </data>
Alles anzeigen
Hierbei wird die Benutzereinstellung examplePageNumber, welche in der Kategorie Allgemein -> Darstellung zu finden sein wird. Da die option.xml bereits eine boolsche Variable als Typ genutzt hat, habe ich hier zur Demonstration eine Auswahleinstellung (select) genutzt. Deren Standardwert ist 10, die weiteren Auswahlwerte sind 20 und 30.
Der Wert bei editable ist ein Byte-Wert. Folgende Werte haben folgende Bedeutung:
0 = Niemand darf den Wert bearbeiten
1 = Der Eigentümer darf den Wert bearbeiten
2 = Der Administrator darf den Wert bearbeiten
3 = Jeder darf den Wert bearbeiten (Eigentümer und Administrator)

Natürlich muss auch hier wieder das Template bearbeitet werden, damit die Benutzereinstellung etwas bewirkt. Ich habe hierzu einmal folgenden Code hinzugefügt:

Smarty-Template

  1. {if $__wcf->getUser()->getUserOption('examplePageNumber') == 10}
  2. {lang}wcf.page.example.userOption10{/lang}
  3. {elseif $__wcf->getUser()->getUserOption('examplePageNumber') == 20}
  4. {lang}wcf.page.example.userOption20{/lang}
  5. {else}
  6. {lang}wcf.page.example.userOption30{/lang}
  7. {/if}
Es ist nicht die ideale Anwendungsmöglichkeit für eine Auswahleinstellung, aber es ist zweckdienlich.

Hier kommen bei mir - und auch durch die userOption.xml selbst, wieder neue Sprachvariablen hinzu, die man anlegen muss. Die der userOption.xml sehen dabei folgendermaßen aus:

XML-Quellcode

  1. <category name="wcf.user.option">
  2. <item name="wcf.user.option.examplePageNumber"><![CDATA[Zahl auf der Beispielseite]]></item>
  3. </category>
Es gibt demnach extra hierfür die Sprachkategorie wcf.user.option, welche dann kombiniert mit dem Namen der Option in der userOption.xml den Namen der Sprachvariable ergibt.

Wie immer muss nun nur noch die package.xml um entsprechende Installations-Anweisungen erweitert werden:

XML-Quellcode

  1. <instruction type="userOption">userOption.xml</instruction>

Das Ergebnis sollte dann folgendermaßen aussehen:


Bei Fragen u.ä. stehe ich natürlich jederzeit gerne zur Verfügung.

Über den Autor
Ich bin Webentwickler in Stuttgart und administriere Server seit vielen Jahren. In diesem Blog erstelle ich hauptsächlich Tutorials für andere Webentwickler, Webdesigner und Serveradministratoren.
-------------------------------------------------------------------------------------------------------------------------------------
I’m a web developer in Stuttgart, Germany, and server administrator since many years. This blog mainly contains a tutorial set for other web developer, web designer and server administrators.

2.775 mal gelesen

Kommentare 5

  • Time -

    Ich muss dir jetzt einfach mal ein Daumen nach oben da lassen
    Ist nice das Jemand ein tutorial gemacht hat....
    Außerdem dann noch so ein "Geiles"
    Danke an dich Black Rider
    und natürlich jedem der dir geholfen hat...

    mfg Time

  • CIA JOE -

    An dieses kann ich mich gar nicht erinnern. :|

  • Logan_Adams -

    Danke für das Tutorial,
    hat alles wunderbar geklappt ;)

    LG

  • Black Rider -

    Von mir aus immer gern. :P

  • Nico Rinker -

    Wie immer ein sehr gutes Tutorial. :)
    Wäre irgndwie dafür, das wir es weiter fördern... Bzw. verbreiten...