Martin Lantzsch
Software Entwickler
16. April 2012

WordPress RSS Feed mit SimpleXML parsen und in JSON ausgeben

16. April 2012 - Geschrieben von Martin - Keine Kommentare

Ein kleines „Abfallprodukt“ aus einem App Server, den ich eben geschrieben habe.

<?php
$url = 'http://linux-doku.de/feed';
$feed = simplexml_load_file($url, 'SimpleXMLElement', LIBXML_NOCDATA);
 
$final = array();
foreach($feed->channel->item as $post) {
	$final[] = array(
		'id' => (string)$post->guid,
		'title' => (string)$post->title,
		'date' => date('d.m.Y', strtotime((string)$post->pubDate)),
		'text' => (string)$post->children('http://purl.org/rss/1.0/modules/content/')->encoded,
		'link' => (string)$post->link
	);
}
echo json_encode($final);

9. November 2011

Joomla eigenes Basis Template – Teil 2

9. November 2011 - Geschrieben von Martin - 2 Kommentare

Im letzten Artikel habe ich die Entwicklung eines Basis Templates für Joomla begonnen, welches als Entwicklungsgrundlage für eigene Templates ganz dienlich ist.

Die tempalteDetails.xml
Wie ich bereits angesprochen habe ist die „templateDetails.xml“ zu vergleichen mit einer „manifest.xml“. Um es kurz zu machen Zeige ich euch einfach mal die fertige „templateDetails.xml“ die ihr nach belieben anpassen könnt.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install PUBLIC "-//Joomla! 1.5//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/1.5/template-install.dtd">
<install version="1.5" type="template">
	<name>basis_template</name>
	<creationDate>2011-11-09</creationDate>
	<author>Dein Name</author>
	<authorEmail>deine@email.tld</authorEmail>
	<authorUrl>http://deinedomain.tld</authorUrl>
	<copyright>Dein Name 2011</copyright>
	<license>Deine Lizenz</license>
	<version>1.0.0</version>
	<description>Basis Template für eigene Entwicklungen</description>
	<files>
		<filename>index.php</filename>
		<filename>templateDetails.xml</filename>
		<folder>images</folder>
		<folder>css</folder>
	</files>
	<positions>
		<position>sidebar</position>
		<position>footer</position>
	</positions>
</install>

Ich denke die meisten Knoten sind selbstverständlich, lediglich „files“ und „positions“ würde ich noch ein mal gern explizit ansprechen. Ach genau, „name“ muss exakt den Ordner Name beinhalten, also heißt euer Template Ordner „basis_template“ so muss auch „name“ genau so heißen.

<files>
	<filename>index.php</filename>
	<filename>templateDetails.xml</filename>
	<folder>images</folder>
	<folder>css</folder>
</files>

„filename“ springt direkt eine eine Datei an. „folder“ hingegen schnappt sich den ganzen Ordner mit Inhalt. Oft sieht man wie „verzweifelte“ Entwickler alle CSS und Bild Dateien von Hand mit „filename“ aufführen, aber warum kompliziert wenn’s auch einfach geht ;-)

<positions>
	<position>sidebar</position>
	<position>footer</position>
</positions>

Joomla holt sich von hier die verfügbaren Positionen, d.h. es werden in den Klappboxen nur die hier definierten Positionen angezeigt, das Template selbst wird nicht nach ihnen abgegrast!

Die templte.css – Struktur für unser Template
Bisher würde das Template nach gar nichts aussehen:


Nicht mal eine Struktur hat es, deshalb machen wir das nun mit CSS:

body {
	margin : 0;
	padding: 0;
}
 
#wrapper {
	width: 900px;
	margin: 0 auto;
}
 
#wrapper #header {
	width: 100%;
	height: 80px;
	background-color: #e5e5e5;
}
 
#wrapper #sidebar {
	float: right;
	width: 20%;
}
 
#wrapper #content {
	float: right;
	width: 80%;
}
 
#wrapper #footer {
	clear: both;
	width: 100%;
}


Das nun in die „template.css“ kopieren, abtippen oder wie es sein sollte. Selbst schreiben ;-) Here we go:

Okay nicht so der Brüller aber für ein Basis Template ausreichend, schließlich ist das hier kein Design Tutorial ;-)

Für Joomla publizieren
Packt einfach das Template Verzeichnis „basis_template“ als .zip. Das ist alles, nun könnt ihr das Tempalte in jeder Beliebigen Joomla Installation installieren.
Damit es nicht so leer wie bei mir aussieht, müsst ihr natürlich noch Module an die entsprechenden Positionen packen. Also z.B. eine Navigation an die „Sidebar“ Position, einen Footer Text an die Position „footer“, etc.

Und jetzt?
Jetzt könnt ihr das Template nach belieben anpassen, nur wem das jetzige noch zu unflexibel ist, sprich wer die Joomla Ausgabestruktur ändern möchte, der sollte den nächsten Teil lesen, in dem ich zeige wie man eigene Views erstellt und damit die Standard Views überschreibt.

11. Oktober 2011

Excel ausgestiegen

11. Oktober 2011 - Geschrieben von Martin - Keine Kommentare


Ops, da war mein VBA (Visual Basic for Applications ;)) Script wohl zu komplex. Excel Tabelle in XML Exportiert, das Script auf JavaScript portiert und schwups war mein Ergebnis auf dem Schirm :)

7. Juli 2010

Twitter via PHP auslesen

7. Juli 2010 - Geschrieben von Martin - 2 Kommentare

Ein Leser dieses Blogs hat vor kurzem den Wunsch nach einem Artikel geäußert, wie er eine Ähnliche „letzte Tweets Anzeige“ wie auf www.Resigame.de bauen kann. Nun so schnell kann es gehen ;)

Da Twitter eine API bzw. von jedem Nutzer eine XML Datei mit Tweets und anderen Account Infos bereitstellt, haben wir leichtes Spiel an die Daten zu kommen.

So können wir die Datei auslesen:

$tweets = simplexml_load_file('http://www.twitter.com/status/user_timeline/[NUTZERNAME].xml');

[NUTZERNAME] muss natürlich mit dem Name des Twitteraccounts ersetzt werden, z.B. „Resigame“.

Aus dem Objekt $tweets können wir nun die letzte Nachricht auslesen:

echo $tweets->status->text;

Alle anderen verfügbaren Objekte kannst du herausfinden, indem du die XML Datei direkt im Browser aufrufst (Dort wird es sogar als Tree dargestellt).

Um auf ältere Nachrichten zuzugreifen kann hinter Status die Zahl angegeben werden, von der aus die Nachrichten „herab“ gezählt werden (allerdings wird bei 0 begonnen!):

echo $tweets->status{2}->text;

Dies würde uns Beispielsweise die 3. letzte Statusnachricht anzeigen.

Um nun die letzten 3 Nachrichten anzuzeigen verwenden wir einfach eine Schleife:

$i = 0;
while($i <= 2)
{
  echo $tweets->status{$i}->text.'<br>';
  $i++;
}

(mit for Schleifen hab ich es nicht so ;))

Da nun aber bei jedem Aufruf der Seite die Twitter XML Datei neu heruntergeladen werden muss, was nicht gerade Traffic und Ressourcenschonend ist – Kleinvieh macht schließlich auch Mist – Cachen wir nun die Datei:

if(filectime('twitter.xml') < time() - (60*10)) {
  // download file
  $file = file_get_contents('http://www.twitter.com/status/user_timeline/[NUTZERNAME].xml');
  file_put_contents('twitter.xml', $file);
}
$tweets = simplexml_load_file('twitter.xml');

Nun wird erst überprüft ob die Datei twitter.xml, welche im gleichen Ordner wie das Script liegt in den letzten 10 Minuten geändert wurde. Ist das der Fall wird das erneute Herunterladen übersprungen, wenn nicht (also wenn der Änderungszeitpunkt länger als 10 Minuten her ist), wird die XML von Twitter heruntergeladen und in unsere twitter.xml geschrieben.

Anschließend wird die twitter.xml geparst.

Das wäre es auch schon, in den nächsten Tagen zeige ich euch dann noch wie ihr die Twitter Nachrichten mittels jQuery schön als Newsticker laufen lassen könnt.