Hier mal ne kurze und schnelle Beantwortung deiner Fragen, vielleicht hilft dir das ja schon bzw. damit du weißt auf welche Lexikon-Einträge du warten musst
1. User-Berechtigungssystem für Templates verstehen.
Benutzergruppenrechte kannst du so abfragen:
Und User Options so:
Vielmehr gibts da eigentlich nicht, da wäre es wohl nicht verkehrt zu erläutern wo es denn genau hapert.
einen bestimmten Bereich eines bestehenden Templates modifizieren möchte
Grundsätzlich gibt es Templatelistener damit kannst du Code nach Stellen einfügen wo etwas wie das steht {event name='eventName'} Wenn an der entsprechenden Stelle allerdings keine Templateevents sind, hat man nur noch die Möglichkeit über JavaScript zu gehen.
3. Werte im ACP hinterlegen. Ich möchte z.B. die Pfade für das o.g. Hintergrundbild im ACP hinterlegen. Muss ich dafür dann eine eigene DB-Tabelle anlegen oder bietet mir das WCF auch andere Möglichkeiten Inhalte so abzuspeichern, dass ich darauf zugreifen kann?
Für ein einziges Bild, würde es sich anbieten den Pfad des Bildes in eine Option zu speichern. Dabei musst du das Bild nur manuell per FTP oder dergleichen hochladen und kannst dann den Pfad in der Option eintragen.
Eine eigene Datenbank-Tabelle wäre in diesem Fall viel zu viel
Stichwort: Options
4. Eigene php Funktionen. Wie bindet man die ein und ab wann muss man etwas in eine eigene Funktion auslagern. Denn über [lexicon='if'][/lexicon] / [lexicon='else'][/lexicon] / [lexicon='elseif'][/lexicon] könnte man ja auch einiges direkt im [lexicon='Template'][/lexicon] lösen. Nur ab dem Moment wo man php Variablen, Methoden und Funktionen etc. braucht, scheint es so zu sein, dass man diese extern über eine php Datei inkludieren muss.
Grundsätzlich gilt Business-Logik gehört in PHP-Klassen und in Templates nur den entsprechenden Code zur Darstellung. Am besten schaust du dir an wie andere Templates aufgebaut sind, dann wirst du recht schnell erkennen ab wann es Sinn macht über eine PHP-Datei zu gehen.
Stichwort: EventListener und TemplateListener.