Also die neuen Boxen müssen wie folgt aussehen
Dies wird für die installation der Boxen benötigt in der package.xml
<instructions type="install">
<instruction type="objectType" />
<instruction type="box" /><!-- optional -->
</instructions>
Als erstes legen wir in der objectType.xml einen neuen Eintrag an
Mit folgenden Inhalt
<!-- box controllers -->
<type>
<name>dein.paket.name.box.object.type.name</name>
<definitionname>com.woltlab.wcf.boxController</definitionname>
<classname>wcf\system\box\NeuerBoxController</classname>
</type>
<!-- /box controllers -->
Damit wird bestimmt wo das WCF nach den passenden Controller für die Hintergrund Aufgaben und zur anzeige suchen muss.
Der name des Object Typen wird jetzt benötigt in der box.xml um diese direkt einzufügen.
Diese Datei ist optional, sofern diese direkt bei der Installation hinzugefügt werden soll.
<box identifier="dein.paket.name.box.name">
<name language="de">Neue Box</name>
<name language="en">New Box</name>
<boxType>system</boxType>
<objectType>dein.paket.name.box.object.type.name</objectType>
<position>sidebarRight</position>
<showHeader>1</showHeader>
<visibleEverywhere>0</visibleEverywhere>
<content language="de">
<title>Neue Box<;/title>
</content>
<content language="en">
<title>New Box</title>
</content>
</box>
Alles anzeigen
Jetzt fehlt eigentlich nur noch zwei dingen.
Der BoxController und das Template.
Der BoxController liegt in dem Verzeichnis wcf/lib/system/box
<?php
namespace wcf\system\box;
use wcf\system\WCF;
/**
* Die Beschreibung der Klasse(In Englisch)
*
* @Dein Copyright
*/
class RegisterButtonBoxController extends AbstractBoxController {
/**
* @inheritDoc
*/
protected static $supportedPositions = ['sidebarLeft', 'sidebarRight'];
/**
* @inheritDoc
*/
protected function loadContent() {
//Hier kann beliebiger PHP Codes ausgeführt werden.
$this->content = WCF::getTPL()->fetch('boxDeinNeuerInhalt');
}
}
Alles anzeigen
mit der Variabel $supportedPositions bestimmen wir wo genau die Box überall sichtbar sein kann.
Es gibt folgende Auswahl Möglichkeiten(Diese können jederzeit erweitert werden)
Variablen Namen | Bedeutung |
hero | Hero |
headerBoxes | Kopfzeile |
top | Über Inhaltsbereich |
sidebarLeft | Linke Seitenleiste |
contentTop | Im Inhaltsbereich oben |
sidebarRight | Rechte Seitenleiste |
contentBottom | Im Inhaltsbereich unten |
bottom | Unter Inhaltsbereich |
footerBoxes | Fußzeile |
footer | Seitenende |
Anschließend können wir das neue Template boxDeinNeuerInhalt.tpl erstellen
Der Inhalt kann dabei beliebig geändert werden und auch Dynamisch Daten verarbeiten z.b. mit einer foreach Schleife.
<p>{lang}dein.paket.box.title{/lang}</p>
<div>
<p>Dein neuer Inhalt kann auch was anders sein so wie du es gerne möchtest!
</p>
</div>
So ich hoffe ich habe da nichts vergessen
Sollten fragen sein einfach melden.
p.s.
Es gibt schon Halbfertige Boxen für Datenbank ObjectListen oder Kommentare