share

Twitter einfach in TYPO3-Template einbinden.

Vorstatz für’s neue Jahr wie üblich „Weniger aufschieben“. Gesagt getan, auf unserer Website hat sich einiges angesammelt gehabt an Kleinigkeiten, die ich immer schon mal angehen wollte. Eines davon war der defekte Twitter-Feed im Footer unserer Seite. Nachdem das einfache einbinden nicht mehr möglich war, haben wir einige Zeit auf den Inhalt verzichtet. Dafür wieder ein PlugIn / Extension bemühen?

Zugegeben, mein erster Versuch ging wieder in diese Richtung. Nachdem ich zwei Extensions (beide noch alpha laut Entwickler) ausprobiert hatte, dachte ich, das muss doch auch einfacher gehen. Schließlich soll einfach von Twitter ein JSON abgefragt und formatiert wieder ausgegeben werden.

Nach kurzer Suche habe ich in der Doku die ContentObjects „USER“ und „USER_INT“ gefunden. USER_INT ist im Gegensatz zu „USER“ ungecacht und daher das gesuchte, schließlich soll der Inhalt von Twitter jedesmal neu geladen werden. Mit beiden lässt sich der Content aus eigenen PHP-Scripten im TypoScript verwenden.

Auf GitHub habe ich dann eine schöne schlanke Klasse gefunden, mit der sich die Twitter-API ansprechen lässt.

Damit habe ich mit dann ein entsprechendes Scriptchen gebaut und in die Seite eingefügt. Hier die kurze Schritt-für-Schritt-Anleitung

1) Twitter API freischalten

Die Twitter-API-Credentials müssen im eigenen Konto aktiviert werden. Diese benötigen wir gleich für den Zugang. Das ganze findet ihr im App-Bereich. Dort legt ihr eine neue App an und erhaltet die entsprechenden Daten.

2) Script erstellen

Erstellt das PHP-Script, dass ihr in eurem Template aufrufen wollt. Einfach als PHP-Datei auf dem Server ablegen, am besten dort, wo ihr auch euer Template liegen habt.

Der Inhalt besteht zum einen aus zwei Funktionen für den Aufruf aus dem TypoScript und am Ende aus der Klasse von GitHub.


<?php
function getTweets()
{
$settings = array(
'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
'consumer_key' => "YOUR_CONSUMER_KEY",
'consumer_secret' => "YOUR_CONSUMER_SECRET"
);

$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$getfield = '?screen_name=marmalade_web&count=5';
$requestMethod = 'GET';

$twitter = new TwitterAPIExchange($settings);
$response = $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();

return $response;
}

function getTweetsInHtml($content, $conf)
{
$json = getTweets();
$array = json_decode($json);

$html = '<ul>';
foreach($array as $tweet)
{
$html .= '<li>';
$html .= '<p>' . $tweet->text;
$html .= ' <span class="tweetTime"> ' . date('d.m.Y H:i ',strtotime($tweet->created_at)) . '</span>';
$html .= '</p>';
$html .= '</li>';
}
$html .= '</ul>';

return $html;
}
[HIER KOMMT DIE KLASSE VON GITHUB]

 

3) Ausgabe im TypoScript-Template

Nachdem wir die Datei erstellt und auf unserem Server abgelegt haben, könne wir im TypoScript-Template darauf zugreifen.

includeLibs.time = Pfad/zu/eurem/Script.php
lib.twitter = USER_INT
lib.twitter {
userFunc = getTweetsInHtml
}

 

Das wars auch schon. Ziemlich simpel. Oder? Für unsere Zwecke allemal gut genug. Das ergebnis seht ihr am Ende dieser Seite.

Joscha Krug ist Gründer und Geschäftsführer der marmalade GmbH aus Magdeburg. Mit seinem stetig wachsenden Team realisiert er schon seit 2009 E-Commerce Projekte mit OXID eShop und Shopware. Er ist Autor der beiden OXID Bücher, erschienen bei o'Reilly.