PHP Twitter-Klasse
Ich habe nun aus dem “Ansatz” aus diesem vergangenem Artikel eine PHP Klasse geschrieben welche das anzeigen von Tweets erleichtern soll.
Folgende Funktionen/Methoden stehen dir zur Anzeige deiner Tweets zur Verfügung:
- Tweets von einem bestimmten User
- Tweets mit einem bestimten Hashtag
- Tweets die direkt an einen User geschrieben wurden
- Tweets die einen bestimmten User erwähnen
Und hier eine Demo mit allen Funktionen:
→ Demo
Die Klasse ist nicht im schönsten PHP geschrieben und man könnte sicherlich noch mehr Möglichkeiten einbauen um den Output zu personalisieren, aber ich denke für die meisten Fälle wird eine HTML-Liste vollkommen ausreichen.
Installation
Schritt 1 – Klasse verfügbar machen
Kopiere folgenden Code in deine Datei wo sich deine PHP Funktionen oder Klassen befinden.
Falls du WordPress benuzt, kopieren den Code in deine functions.php Datei in deinem Template Verzeichnis.
Schritt 2 – Einbinden
Um Deine Tweets anzuzeigen musst du nur noch die Funktion showRoboTweets(); an der Stelle aufrufen wo du deine Tweets angezeit haben möchtest. Das erste Argument ist der Suchparameter und das zweite Argument ist die Anzahl der Tweets welche du anzeigen möchtest (Standart sind 5 Tweets).
Hier die 4 verschiedenen Methoden um die gewünschten Tweets anzuzeigen:
Tweets von einem bestimmten User
1 2 3 | if(function_exists('showRoboTweets')) { echo showRoboTweets("podlebar", 5); } |
Tweets mit einem bestimten Hashtag
1 2 3 | if(function_exists('showRoboTweets')) { echo showRoboTweets("#robocode", 5); } |
Tweets die direkt an einen User geschrieben wurden
1 2 3 | if(function_exists('showRoboTweets')) { echo showRoboTweets("@podlebar", 5); } |
Tweets die eine bestimmten User erwähnen
1 2 3 | if(function_exists('showRoboTweets')) { echo showRoboTweets("%@podlebar", 5); } |
Schritt 3 – CSS
Die Klasse generiert folgenden HTML-Code:
1 2 3 4 5 6 7 | <ul class="latesttweets"> <li>Tweet 1<span>Vor 1 Minute</span></li> <li>Tweet 2<span>Vor 8 Minuten</span></li> <li>Tweet 3<span>Vor 9 Minuten</span></li> <li>Tweet 4<span>Vor 17 Minuten</span></li> etc.. </ul> |
Falls keine Tweets gefunden werden oder ein Fehler auftritt wird ein Listenelement mit der CSS-Klasse “notice” oder “error” ausgegeben. Diese kannst du dementsprechend gestalten.
1 2 3 | <ul class="latesttweets"> <li class="error">Ooopsss</li> </ul> |
Hier ein Beispiel wie man die Tweets mit CSS gestalten kann:
1 2 3 4 5 | ul.latesttweets { margin: 0; padding: 0; list-style: none } ul.latesttweets li { border-bottom: 1px solid #ccc; padding: 4px 0 } ul.latesttweets li.error { color: #BF2F2F; border: 0 } ul.latesttweets li.notice { color: #CFAC4D; border: 0 } ul.latesttweets li span { display: block; color: #999; font-family: Georgia; font-style: italic } |
That’s it… simpel oder?
Falls du Fragen oder Anregungen hast kannst du diese gerne bei den Kommentaren hinterlassen oder mich anzwitschern.
34 Kommentare
das ist echt ne spitzenKlasse! ;-) macht viel freude!
ist es ev. möglich eine kleine vorschau der bei twitter mit den merkwürdigen kurzlinks abgespeicherten bilder anzuzeigen. so dass man zur ansicht des bildes auf das z.B 50x50px kleine bild klicken könnte?
ansonsten perfekt und innert kürze bei mir implementiert!
danke!!!
Vorab Danke für diese gute Klasse. Ich habe dennoch ein Problem: Kann es sein, dass keine Tweets ausgelesen werden, die älter als fünf Tage sind?
Danke für Deine Antwort und viele Grüße!
endlich mal eine Klasse die funktioniert, Danke!
Alopecia is a condition that has an effect on the hair progress typically in two strategies. The first way is when hair follicles get broken and this impacts the growth of hair. The 2nd way is when the hair cycle is disturbed, either the expanding period is shortened or the resting period is lengthened. Alopecia has been labeled into different problems that impact the hair in diverse manners. Alopecia areata is one type of problem which success in hair staying misplaced in patches.
Very good I’m definitely making a note to cme back because I need this information for a project I’m working on. Please provide more info. I don’t like searching google.
Sorry, klappt alles prima! Man muss als twitter-username auch diesen übergeben und nicht die email-adresse ;-)
Vielen Dank für die coole Class!
Gruß
M-ko
Hi! Das sieht erstmal großartig aus. Meine Frage: Funktioniert das so noch?
Er sagt mir immer: Keine Tweets gefunden, obwohl unter dem account welche vorhanden sind.
Gruß,
M-ko
Hi! Das sieht erstmal großartig aus. Meine Frage: Funktioniert das so noch?
Er sagt mir immer: Keine Tweets gefunden, obwohl unter dem account welche vorhanden sind.
Vielen Dank!
http://pastie.org/1284121
Bitte nicht ausschimpfen, bin leider (noch) Anfänger… ;-)
Schönen Tag
Marc
schmeis mal deinen code auf pastie.org und poste den link.. dann kann ich mal nachschauen.
gruss
Hallo Bart
Auch bei mir kommt leider “Keine Tweets gefunden”.
Hast du mir evt einen Tipp?
Danke
Marc
Hi…
hast du deine Tweets evtl. geschützt?
Poste sonst mal deinen Code auf pastie.org und gib mir den Link.. ich schaus mir mal an.
Nabend, bei mir will es nicht Funktionieren. Ich hab alles gemacht wie Beschrieben. Wenn ich meinen Twitter Account eintrage kommt immer “Keine Tweets gefunden”. Trage ich deinen ein, klappt alles. Woran liegt das? Ja ich habe den namen richtig und korrekt geschrieben. Weil ich verzweifelt war, sogar kopiert.
Danke für die Hilfe.
MfG
Nabend, leider nicht ganz – habe mir das durchgelesen – da gibt es einen Link zu “tweetlater” – dort kann/muss man sich registrieren … die Funktionalität scheint vorhanden zu sein (bei der free-Version) bei der Profi-Version (USD 29,97/per month) natürlich noch mehr …
Aber hier http://devzone.zend.com/article/4431 habe ich (vermutlich) etwas gefunden – werde mich nächste Woche mal damit beschäftigen.
Also erst einmal vielen Dank!
Hi.. hab bei googlen as hier gefunden: http://www.riceblogger.com/blogging-tips/direct-message-new-follower-on-twitter/
scheint das zu machen was du möchtest :)
Hi, nachdem Du jetzt gut gegessen hast :) – hier noch eine Fachfrage (hatte schon gegoogelt, aber nichts gefunden):
Ich würde gern einen neuen Follower per Direktnachricht begrüssen – natürlich automatisch … geht/gibt es so etwas?
Gruss Reinhard
Jo, jetzt funzt es mit den Logos!
Vielen Dank für die schnelle Hilfe!
sorry.. hatte die falsche zeile eingefügt :)
hier die richtige: http://pastie.org/839111
Nabend – das mit den Hash-Tags und target=”_blank” habe ich jetzt mal so gelöst (suboptimal), aber geht:
// Der Reguläre Ausdruck
$pattern = ‘&(“>#)&is’;
// Ersatzstring
$replace = ‘” target=”_blank” >#’;
// RegExp auswerten, Ersetzung durchführen
$output = preg_replace($pattern, $replace, $output);
High, hat leider so nicht funktioniert – wenn ich die Zeile so einfüge kommt Fehlermeldung:
Unexpected character in input: ‘\’ (ASCII=92) state=1
habe dann die Zeile so abgeändert:
if($this->type==1) $output .= “link[1]['href']“.”\” alt=\”".$tweet->author->name.”\” />”;
dann kommt keine Fehlermeldung mehr, aber auch immer noch nicht das Profil-Logo des Tweet-Senders.
Was habe ich noch falsch gemacht?
Gruss Reinhard
so.. here you go..
einfach nach Zeile 59 diese Zeile einfügen.
Danach nur noch mit CSS stylen und fertisch..
hi…
nr. 1 geht auf die schnelle nicht da twitter HTML Daten zurück gibt und ich somit keinen Einfluss auf die Links habe.
nr. solle gehen.. mach ich in einer frien minute und melde mich per twitter :)
Gruezi, ich bin es noch einmal – habe mir noch einiges überlegt:
1. wie ist es in den Klassen (bzw. Skript) möglich bei den Links ein -> target=”_blank” einzubauen?
2. wenn ich Tweets z.B. mit Hash-Tags verwende – wie kann ich das Profil-Logo des/der Accounts ebenfalls anzeigen?
Vielen Dank! Gruss Reinhard
OK, vielen Dank – hatte mich halt mal interessiert.
Also ich muss schon sagen Deine Klassen sind wirklich klasse !!!
Gruss und schönes Wochenende
Reinhard
Die Zeile:
könntest du auch so schreiben:
Dann kommt das limit=5 zum einsatz.. es sagt dem Script das es 5 Tweets auselesen soll falls kein Limit übergeben wird. Es ist also nur ein Fallback falls jemand vergisst das Limit anzugeben beim Aufruf
Nabend, habe da noch mal eine Frage zum Skript …
in der 1. Zeile steht:
function showRoboTweets($q, $limit=5)
hat denn das limit=5 einen Einfluss? Habe einige Einstellungen getestet …
echo showRoboTweets(“twitteraccount”, 5);
hier steht ja das Limit auch drin (und die Änderungen werden auch korrekt umgesetzt)
Gruss Reinhard
@Ratgeber Geldsparen
cool… freut mich :)
Sehr nützlich, vielen Dank! Ich habs auf meiner Website Ratgeber Geldsparen (läuft unter MODx, nicht WP) im Einsatz (linke Spalte).
Das Script ist sehr viel schneller als twittereigene Tools.
Viele Grüße aus Berlin,
Uwe.
Wenn Twitter down ist, erscheint die Meldung, dass die Verbindung fehlgeschlagen ist.. wenn ein Request Time-Out kommt auch.. Was ja bei DDOS der Fall ist.
Cool. Was aber passiert wenn Twitter down ist oder grad einem DDOS-Angriff standhalten will?
hmm das ist sicherlich machbar, aber nicht mit der “Search” Methode von Twitter die ich in der Klasse verwende.
Mit der “Search” Methode kann man nur Tweets suchen.. das was du möchtest erfordert einwenig API-Spielerei.. aber guter Ansatz für ein mögliches weiteres Projekt ;)
Cool die Klasse. Ich mag die Tweets nicht in der Sidebar in meinem Blog haben. Einzige Ausnahme die ich eigentlich mal selber programmieren wollte waren Konversationen. Also nur Tweets von mir auf die es auch eines oder mehrere Replies gibt. Ob das wohl möglich wäre? So als eine Art latest Comments aber eben latest conversations Plugin?