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
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.
Noch keine Kommentare.
Einen Kommentar hinterlassen
Suchen
Über Web-aktiv
TYPO3 Projekte
- DAV Fulda
- Der Internet Redakteur
- Der Internet Redakteur – Blog
- Enders Fenster und Türen
- Freiw. Feuerwehr Bad Hersfeld
- GPS Mountainbiker.de
- Günther Tank GmbH
- Gutschein-Fulda.de
- Hochrhoen-touren.de
- Horse Guided Experience
- Impuls Ergotherapie Fortbildung
- Medi Sport Gym
- mein-fulda.com
- NLP Weiterbildung, Elke Post
- RELAX Group
- Rohrreinigung Fulda
- V.W Günther Mineralölhandelsgesellschaft mbH
- Vogelsbergschule Lauterbach
- Wolfgang Schaub GmbH


