TYPO3: Individuelle Inhalte mit TypoScript
Hin und wieder möchte man seine TYPO3 Website mit individuellen Funktionen bereichern. Dafür gleich eine Extension zu entwickeln ist wohl etwas übertrieben. Ich möchte hier an einem konkreten Beispiel demonstrieren, wie man mit TypoScript, etwas PHP auf die Typo3 Datenbank zugreift und eine Ausgabe in der Website erzeugt.
1. Das Projekt
[aartikel]3827323223:right:gpsmoun-21[/aartikel]Auf meiner Website http://www.gps-mountainbiker.de befindet sich unter Links eine Linkliste. Sie wurde mit der Extension cmwlinklist erstellt und bietet u.a. die Möglichkeit, einen Link vorzuschlagen. Ich wollte meinen Besuchern Infos über die Anzahl der Links und den Klicks darauf zur Verfügung stellen. Alle dazu notwendigen Daten befinden sich in der Datenbank-Tabelle der o.g. Extension.
2. Was benötigen wir?
-
Die Extension typoscript_code ermöglicht das Einbinden von TypoScript als Inhaltselement
-
TypoScript, das die PHP– Datei einbindet und die Funktion aufruft
-
Eine PHP Datei, die unsere Infos aus der Datenbank ausließt und darstellt
Als erstes lädt man sich die Extension typoscript_code vom TER herunter und installiert sie mit dem Extension Manager. Sie ermöglicht das komfortable Einbinden von TypoScript als Inhaltselement.
3. Typoscript
Das TypoScript ist schnell erklärt. Es besteht im Wesentlichen aus 2 Teilen. Erstens dem Befehl zum Einbinden der PHP-Datei. Das war für mich zunächst nicht so trivial wie man denkt. Wollte ich doch zunächst die Datei auch im Inhaltselement einbinden. Das funktioniert natürlich nicht! Die Datei wird im PAGE-Objekt eingebunden.
page = PAGE
page {
# Bibliotheken einbinden
includeLibs.dataCount = fileadmin/scripts/class.user_datacount.php
...
Ob die Datei korrekt eingebunden wurde kann auch im TypoScript Object Browser prüfen.
Das eigentliche TypoScript wird nun als Inhaltselement mit der o.g. Extension in der Seite angelegt.
10 = TEXT
10{
postUserFunc = user_datacount->main
postUserFunc{
label_1 = Links
label_2 = Klicks
table = tx_cmwlinklist_link
field = clicks
where = status=1
}
Das Script im Einzelnen
Da ich eine Ausgabe erzeugen möchte, habe ich das cObject TEXT gewählt. Mit postUserFunc wird die Methode main() der Klasse user_datacount aufgerufen. Die Methode main() erwartet die Parameter $content und $conf. Der erste ist gewöhnlich leer, der zweite enthält ein Array. Dieses Array wird nun mit den Werten label_1, label_2 für die Beschreibungstexte, table für den Tabellennamen und field für den Namen des Feldes in der Tabelle gefüllt.
4. PHP
Die PHP Datei enthält eine Klasse user_datacount mit den Methoden main() und getData(). Letzere stellt die Verbindung zur Datenbanktabelle der CMW Linklist Extension her, ermittelt die Anzahl der eingetragenen Links und die Gesamtzahl der Klicks auf alle Links. Die Methode main() erzeugt schließlich die Ausgabe als HTML auf der Website. Wie man sieht, stehen die im TypoScript angegebenen Werte als Array $this->conf[] zur Verfügung.
<?php
class user_datacount{
private $conf;
public function main($content,$conf){
$this->conf = $conf;
$data = $this->getData();
$html = '
<div>
<p>'
.$this->conf['label_1'].': '.$data['datasets'].'<br>'
.$this->conf['label_2'].': '.$data['datasum'].'
</p>
</div>';
return $html;
}
protected function getData(){
$result = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
'COUNT(*) AS datasets , SUM('.$this->conf['field'].') AS datasum', //SELECT
$this->conf['table'], //FROM
$this->conf['where'], //WHERE
'', //GROUP BY
'', //ORDER BY
'' //LIMIT
);
$entries = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($result);
return $entries;
}
}
?>
5. Ergebnis & Ausblick

Ausgabe auf www.gps-mountainbiker.de
Die PHP Klasse wurde im Sinne von OOP allgemein gehalten um wiederverwendbar zu sein. Ich werde die Klasse auch noch zum Anzeigen der verfügbaren GPS-Touren und der Anzahl der Downloads verwenden. Eine Erweiterung der Klasse um eine Funktion, die eine Top 5 Liste ermittelt ist ebenfalls angedacht.
Ein Kommentar to TYPO3: Individuelle Inhalte mit TypoScript
Abschnitt 3: „Die Datei wird im PAGE-Objekt eingebunden.“ genau das wars! Stundenlanges Suchen und Testen nimmt hiermit ein erfolgreiches Ende. Vielen herzlichen DANK!
Schreib einen Kommentar
Dieser BLOG
Werbung
TYPO3 Projekte
- ALSA GmbH
- BKK Technoform
- Connors SL
- DAV Fulda
- Enders Fenster und Türen
- Fahrradhandlung A.Riebold
- Fitnessstudio Medi Sport Gym, Bad Hersfeld
- Freiw. Feuerwehr Bad Hersfeld
- GPS Mountainbiker.de
- Günther Tank GmbH
- Hochrhoen-touren.de
- Impuls Ergotherapie Fortbildung
- Krieg & Fischer Ingenieure GmbH
- Landbäckerei Brack
- NLP Weiterbildung, Elke Post
- Physioprofil Bad Hersfeld
- Praxis am Salzberg
- RELAX Group
- RENSCH-HAUS GMBH
- Rhönschule Gersfeld
- Rohrreinigung Fulda
- V.W Günther Mineralölhandelsgesellschaft mbH
- Vogelsbergschule Lauterbach
- Wolfgang Schaub GmbH
- Zahnatelier Feinschliff
4. April 2015