Zum Verständis uns Hintergrundwissen zuerst einmal ohne Plugin, dann mit.
Ein paar Basics zu Templates
Neben Foren/Benutzer/Rechte und "Alles Andere" ist der AdminCP-Tab Erscheinungsbild die dritte Riesengruppe an Einstellungen. Die Templates, um die sich da alles dreht (auflisten bei "Templates verwalten", rote sind vom Admin geänderte), bestehen prinzipiell aus folgenden 7 Arten von Dingen:
a) HTML, CSS; JS. Klar. Allerdings ist das meiste JS-Zeug in statischen Dateien außerhalb des Templatesystems, weil es dabei wenig bzw. nichts zum dynamischen Anpassen gibt. HTML und CSS sind in den Templates relativ strukt getrennt, es gibt also viele reine CSS-Templates.
b) Einbindungen von anderen Templates, hoffentlich auch klar. Alles ist verschachtelt. Die Spitze für die meisten (alle?) Sachen ist PAGE_CONTAINER:
c) Variablen, in der Notation {name}. In jedem Template gibt es mindestens Infos über den Benutzer als {$visitor.spaltenname} mit (fast) allen Spalten aus der xf_user - DB-Tabelle, also zB. {$visitor.user_id}) und ein paar Configoptionen. Je nach Template bzw. aufgerufener Seite kommen aber auch Sachen wie Beitragsinhalte durch Variablen rein.
d) Phraseneinbindungen. Statt die fixen Texte direkt im Template zu haben sind sie in einer eigene Key-Value-Tabelle, für die bessere Übersetzbarkeit usw. Auch innerhalb der Phrasentexte kann man Variablen verwenden.
e) Verschiedene Steuerbefehle, wie xen:if usw.usw.
Code:
<xen:if is="{$visitor.user_id} == 245259">
Hallo Alice
</xen:if>
f) Styleproperties (vor allem) für CSS. Man muss sie nicht verwenden, aber man kann verschiedene CSS-Werte (Farben, Größen usw.) in den Templates durch Referenzeirungen dieser Variablen ersetzeu, und die Werte dann bequem in einer eigens dafür gemachten Seite im AdmicCP einstellen (mit Colorpicker für die Farben usw.usw.), bzw ändern, ohne sich durch die Templates durchgraben zu müssen.
g) Wenn das alles nicht reicht, PHP-Callbacks. In der einfachsten Form und ohne Parameter kann das wie folgt ausschauen:
Eigene Datei library/aliceKlasse.php:
PHP:
<?php
class aliceKlasse
{
public static function erstesCallback(XenForo_ControllerPublic_Abstract $controller, XenForo_ControllerResponse_Abstract &$response)
{
echo "Hallo";
//insert DB-Abfrage hier, und paar Sachen mit den Benutzerrechten, undundund
}
}
In einem Template dann:
Code:
<xen:callback class="aliceKlasse" method="erstesCallback"></xen:callback>
Wird immer bei Templatedurchlauf ausgeführt, und die echo-Ausgaben in den Text eingesetzt. Außer "normalem" PHP kann man natürlich auch auf Zeug aus dem Xenforo-Kern zugreifen.
...
Wie gesgat, "Templates verwalten" zum Anschauen etc.
Die Phrasen sind im Navi weiter unten.
Man kann alle seine angepassten Templates und Phrasen (und Styleprop.werte) in eine XML-Datei verpackt rausexportieren und in anderen Foren wieder importieren, solche Themes gibts haufenweise zum Download. Nimmt man sowas "erbt" das vom Default, es muss also nicht alles überschrieben werden. Kann beliebig rein verschachtelt werden. (Und es gibt auch die Möglichkeit, die Benutzer ihr persönlcihes Theme aus mehreren aussuchen zu lassen, undundund. Egal.).
IP in Templates ohne Plugin
läuft eben darauf hinaus, dass man eines der Templates (zB. den schon erwähnten PAGE_CONTAINER) händisch bearbeitet.
Für die IP hat man allerdings ein kleines Problem mit den Variablen. Xenforo hat IPs für Posts, Registrierungsversuche usw.usw., aber die IPs von "jedem" Seitenaufruf zu verarbeiten ist für das Kernsystem uninteressant und wird auch nicht als Templatevariable angeboten. (Und die Post-IPs etc. sind meines Wissens nach nicht in PAGE_CONTAINER verfügbar). Es muss also ein PHP-Callback werden, und da mit einem normalen echo die IP ausgeben (an die Stelle, wo das Callback im Template aufgerufen wird).
...
Den Pluginteil später in einem weiteren Beitrag,
ist nämlich noch nicht geschrieben, und will dich nicht länger warten lassen
