Zurück zur Startseite

23. Sep 2009

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.

ind_inhalte_ts_01

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.

ind_inhalte_ts_02

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

ind_inhalte_ts_03

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.

Autor: Andreas Kempf, Mittwoch, 23.09.2009 TYPO3

Ein Kommentar  Kontakt

Ein Kommentar to TYPO3: Individuelle Inhalte mit TypoScript

Noch_ein_nick
4. April 2015

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

Neben den Aspekten der Website Erstellung mit TYPO3 oder Wordpress vom Webdesign bis zur Extensionentwicklung, behandelt dieser BLOG auch das Thema Vermarktung im Internet. Zum Online Marketing gehören u.a. Lokale Suchmaschinenoptimierung, OnPage SEO, Online PR, Content Marketing, Newslettermarketing, Social Media, Webanalyse und vieles mehr.
Viel Spaß und neue Erkenntnisse wünscht
Andreas Kempf, Web-aktiv

web-aktiv.com  |  Kontakt   |  Impressum Datenschutz

Supporting Member of the TYPO3 Association

Werbung

XOVI