webEdition jetzt 100% Open-Source

Das beliebte Content-Management-System webEdition ist nun zu 100 Prozent Open-Source.

Seit dem 1. Juni 2009 ist das bis Oktober 2008 kommerzielle Content-Management-System webEdition komplett frei. Es wurde eigens vom Hersteller living-e eine eigene Community gegründet.

Mit der komplette Überführung sind ab sofort auch alle zuvor kostenpflichtigen Support-Dokumente frei im Netz verfügbar. Für mich ein weiterer Grund jederzeit wieder webEdition zu nutzen.

Google Analytics API mit PHP – Teil 2: Account-Daten abrufen

Erfahren Sie, wie Sie Ihre Google Analytics Account Daten mit PHP und der Data Export API abfragen können.

Bevor ich Ihnen erläutere, wie Sie Ihre Google Analytics Konto-Daten abrufen können, lesen Sie bitte den ersten Teil Authentifizierung dieser Serie. Im folgenden Beispiel wird das Auth-Token $auth aus dem ersten Artikel benötigt.

Um auf Ihre Account-Daten zugreifen zu können, müssen Sie sich bei Google authentifizieren. Dies geschieht indem Sie einen angepassten HTTP-Header mit jeder Abfrage mitsenden. Auch hierzu verwenden ich wieder das HTTP_Request-Package von PEAR. Folgendes Beispiel zeigt, wie Sie eine Anfrage an den entsprechenden Service stellen:

// URL des Account-Services
$FEED_URL = 'https://www.google.com/analytics/feeds/accounts/default';

// neues Request-Objekt erstellen
$req = new HTTP_Request($FEED_URL);
  
// Wichtig: Methode GET nicht POST
$req->setMethod(HTTP_REQUEST_METHOD_GET);

// Authentifizierungs-Header konstruieren
$req->addHeader('Authorization', 'GoogleLogin auth='.$auth);

// Anfrage senden
$response = $req->sendRequest();

Das erfolgreiche Ergebnis dieser Anfrage enthält eine XML-Datei. Die Daten sehen ungefähr so aus. Ich habe IDs und Domainnamen durch Fantasie-Inhalte ersetzt.

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:dxp="http://schemas.google.com/analytics/2009">
  <id>http://www.google.com/analytics/feeds/accounts/YOURID</id>
  <updated>2009-03-21T07:46:38.000-07:00</updated>
  <title type="text">Profile list for YOURNAME</title>
  <link rel="self" type="application/atom+xml" href="http://www.google.com/analytics/feeds/accounts/default"/>
  <author>
    <name>Google Analytics</name>
  </author>
  <generator version="1.0">Google Analytics</generator>
  <openSearch:totalResults>14</openSearch:totalResults>
  <openSearch:startIndex>1</openSearch:startIndex>
  <openSearch:itemsPerPage>14</openSearch:itemsPerPage>
  <entry>
    <id>http://www.google.com/analytics/feeds/accounts/ga:0001</id>
    <updated>2009-01-30T09:06:56.000-08:00</updated>
    <title type="text">www.yourdomain.de</title>
    <link rel="alternate" type="text/html" href="http://www.google.com/analytics"/>
    <dxp:tableId>ga:0001</dxp:tableId>
    <dxp:property name="ga:accountId" value="00002" />
    <dxp:property name="ga:accountName" value="www.yourdomain.de" />
    <dxp:property name="ga:profileId" value="00002" />
    <dxp:property name="ga:webPropertyId" value="UA-00001-1" />
  </entry>
  <entry>
    ...
  </entry>
</feed>

Sie können die Daten folgendermaßen ermitteln. Bitte beachten Sie die Anmerkungen nach dem Code-Beispiel.

if ($response) {
  
  // Daten extrahieren    
  $content = $req->getResponseBody();

  // als XML-Datei laden
  $xml = simplexml_load_string($content);
}

Um die XML-Daten weiterzuverarbeiten, können Sie z.B. die hier benutzte Funktion simplexml_load_string nutzen. Bitte beachten Sie aber, dass in den XML-Daten Namespaces verwendet werden. Die benutze Funktion kann diese Daten leider nicht auslesen. Ich empfehle Ihnen lieber auf die DOM-Funktionen von PHP zurückzugreifen.

Die hier ermittelten Google Analytics Kontodaten werden benötigt, um die Statistiken der von Ihnen angelegten Websites abzufragen. Im nächsten Teil dieser Serie erfahren Sie, wie Sie Pageviews und Visits einer Ihrer Website abfragen können.

Abonnieren Sie den News-Feed, um weitere Artikel in dieser Serie nicht zu verpassen.

Google Analytics API mit PHP – Teil 1: Authentifizierung

So können Sie die Google Analytics Daten per PHP mit der Data Export API abfragen.

Vor wenigen Tagen hat Google nach langer Zeit endlich eine Schnittstelle für den Web-Analytics-Dienst Google Analytics zur Verfügung gestellt. Mit der Data Export API können Sie die gespeicherten Daten abfragen.

Google stellt dafür bereits vorgefertigte Clients für Java und JavaScript zur Verfügung. Bisher gibt es jedoch keine Bibliothek für Abfragen mit PHP.

Im ersten Teil der Serie möchte ich die Authentifizierung bei Google vorstellen. Diese ist notwendig um die Account-Daten und Statistiken abzufragen.

Für die Authentifizierung ist es notwendig die Daten an Google per HTTP-Post zu übertragen. Es gibt unterschiedliche Möglichkeiten dies umzusetzen. Ich habe mich für das PEAR-Paket HTTP_Request entschieden. Sie sollten es Ihrer PEAR-Installation hinzufügen. Im Anschluss können Sie es folgendermaßen in Ihrem Script nutzen.

require_once('HTTP/Request.php');

Um sich nun bei Google zu authentifizieren, müssen Sie den Nutzernamen und Ihr Google Analytics Passwort wissen. Zusammen mit einem festgelegten Service- und Account-Typ müssen Sie alle Parameter per POST an Google senden. Folgender Code übernimmt dies:

$AUTH_URL 	= 'https://www.google.com/accounts/ClientLogin';

$email 		= 'ihremail@domain.com';
$password 	= 'ihrpasswort'

// neues Request-Objekt erstellen
$req = new HTTP_Request($AUTH_URL);
$req->setMethod(HTTP_REQUEST_METHOD_POST);

// Parameter hinzufügen
$req->addPostData('Email',        $email);
$req->addPostData('Passwd',       $password);

$req->addPostData('accountType',  'GOOGLE');
$req->addPostData('service',      'analytics');  
$req->addPostData('source',       'meshed.de-test-0.1');

// Request senden
$response = $req->sendRequest();

Wenn Sie nun der Request absendet haben und Sie sich erfolgreich authentifizieren konnten, erhalten Sie als Response eine Nachricht die aus drei Zeilen besteht. Darin ist auch das sogenannte Auth-Token enthalten. Sie benötigen dies um alle weiteren Abfragen an den Account durchzuführen.

Der folgende Code zeigt, wie Sie das Auth-Token aus dem Response-Body auslesen können.

$authArray = array();

// Zeilen des Responses in Array speichern    
$lines = explode("n",$req->getResponseBody());

// Zeilen durchgehen
foreach ($lines as $line) {
  
  // Schlüssel vom Wert trennen
  $keyValue = explode("=", $line);

  $key = $keyValue[0];
  $value = $keyValue[1];

  // Daten in Array schreiben
  $authArray[$key] = $value;   
    
}

// Auth-Token ermitteln
$auth = $authArray['Auth'];

In der Variable $auth ist nun der Auth-Token gespeichert.

In dem nächsten Teil der Serie erkläre ich Ihnen, wie Sie Ihre Google-Analytics Kontodaten abfragen können.

Abonnieren Sie meinen News-Feed, um die folgenden Artikel zur Google Analytics API nicht zu verpassen.

Redaxo 4.2.0 veröffentlicht

Seit heute steht die neue Version des Content-Management-Systems Redaxo zur Verfügung.

redaxo-4-2-0

Das Redaxo-Entwickler-Team hat heute die aktuelle Version von Redaxo freigegeben. Sie haben viele interessante Neuerungen umgesetzt. Hier ein Auszug aus der Presseinformation:

  • Neues Backenddesign
  • Eigene Designs leicht im Backend integrierbar
  • Den Spalten kann man unterschiedliche Module zuweisen -> mehr Einfluss auf den Redakteur
  • Eigenes Backendprofil verfügbar, Sprachwechsel ist erlaubt
  • Benutzerverwaltung: Startseite ist definierbar, unnötige Rechte entfernt
  • Kleinere Bugfixes eingebaut

Wie auf dem Screenshot zu erkennen, sieht das neue Backend wirklich frischer und übersichtlicher aus. Alle Informationen zur neuen Redaxo-Version gibt es auf der Website.

Abonnieren Sie den meshed News-Feed für weitere interessante Artikel zum Thema Redaxo.

Twitter mit PHP

Sie erfahren an einem Beispiel, wie man Status-Updates mit PHP an Twitter sendet.

Der Micro-Blogging-Dienst Twitter erfreut sich sehr großer Beliebtheit. Viele Blogger, und mittlerweile auch Portale wie Spiegel Online, nutzen den Dienst um über aktuelle Nachrichten zu informieren.

Damit jedoch nicht jede Nachricht per Hand von einem Redakteur oder Blogger eingegeben werden muss, kann man Status-Updates auch automatisiert an Twitter senden. Dazu stellt Twitter eine Entwickler API zur Verfügung.

Für PHP gibt es im PEAR-Projekt bereits eine Implementierung um einige API-Funktionen zu nutzen. Mit Hilfe des Pakets Services Twitter kann man folgendermaßen Status-Updates senden.

Zunächst muss dazu das Paket installiert und eingebunden werden. Weitere Informationen zur Installation von PEAR und Hinzufügen von Paketen gibt es in der PEAR-Dokumentation.

require_once 'Services/Twitter.php';

Nachdem das Paket installiert und geladen ist, kann man eine neue Instanz mit dem Konstruktor new Services_Twitter erstellen. Der Konstruktor benötigt zwei Parameter. Der erste ist der Twitter-Nutzername – der zweite das Twitter-Passwort.

Ein Update wird einfach über die Status-Instanz $twitter->statuses mit der Funktion update gesendet. Die Funktion gibt ein XML-Response mit Informationen zum Status zurück. So wird’s gemacht:

$username = 'xxxx';
$password = 'yyyy';

try {

  $twitter = new Services_Twitter($username, $password);
  $msg = $twitter->statuses->update("Twitter-Update mit PHP und PEAR");

  print_r($msg); 
 
} 
catch (Services_Twitter_Exception $e) {

  echo 'Fehler: ' . $e->getMessage();

}

Wenn kein Fehler auftritt, sollten Sie innerhalb weniger Sekunden das Status-Update auf Ihrer Twitter-Seite sehen.

Wenn Sie Fragen oder Anmerkungen haben, hinterlassen Sie bitte einen Kommentar.

Abonnieren Sie den meshed News-Feed, wenn Sie in Zukunft weitere nützlich Tipps und Tricks erhalten wollen.

Feedburner API mit PHP

Anhand eines Beispiels erkläre ich Ihnen, wie Sie die Feedburner Awareness API mit PHP abfragen können.

Feedburner, der Feed-Analyse-Dienst von Google, erfreut sich nicht nur bei Bloggern großer Beliebtheit. Immer mehr Unternehmen nutzen den Dienst um über die Anzahl der Abonnenten informiert zu werden.

Interessant an Feedburner ist, dass die erfassten Daten über die Feedburner API abgerufen werden können. Dadurch ist es unter anderem möglich detaillierte Statistiken über die Nutzung der Feeds zu erstellen.

Im folgenden Beispiel soll die aktuelle Anzahl der Feed-Abonnenten (Subscriber) abgerufen werden. Dazu wird die Feedburner-URI, die eindeutige Bezeichnung des Feeds, benötigt. Nehmen wir z.B. die ausgedachte Feed-URL http://feeds2.feedburner.com/meinid, dann ist meinid die Feedburner-URI. Diese können wir nun nutzen, um die API per REST abzufragen. Der Code zur Konstruktion der Request-URL sieht so aus:

$uri = 'meinid';
$req_url = 'https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri='. $uri;

Der Request kann im einfachsten Fall direkt per simplexml_load_file ausgeführt werden. Die Response (XML) wird dadurch direkt in PHP-Objekte umgewandelt. Die Anfrage wird folgendermaßen gestellt:

$result = simplexml_load_file($req_url) ;

Die Response sieht in XML folgendermaßen aus:

<rsp stat="ok">
  <feed id="hasfdashjkfdhkasjfkdjas" uri="meineid">
    <entry date="2009-03-15" circulation="56" hits="320" reach="2" />
  </feed>
</rsp>

Um sicher zu gehen, dass die Anfrage erfolgreich war, müssen wir das Attribut stat des Elements rsp auswerten. Dazu kann man auf die Attribute des Elements folgendermaßen zugreifen:

$resAtts = $result->attributes();
if ($resAtts->stat == 'ok') {
  /* ... weiterer Code ... */
}

Die Anzahl der aktuellen Subscriber ist im Attribut circulation des Elements entry enthalten. Es kann mit folgendem Code ausgelesen werden:

$feedAttr = $result->feed->entry->attributes();
$subscribers = $feedAttr->circulation;
echo 'Anzahl der Abonnenten: '. $subscribers;

Die Feedburner API bietet darüber hinaus noch die Möglichkeit Einträge über Zeitspannen abzufragen. Weitere Informationen dazu erhalten Sie auf der Website der Feedburner API.

Wenn Sie Fragen oder eine Anregung haben, hinterlassen Sie bitte einen Kommentar.

Abonnieren Sie den meshed News-Feed.

HTML-Description und Keywords auf statischen WordPress-Seiten

So können Sie mit WordPress auch statischen Seiten eine Description und Keywords zuweisen.

Bei WordPress nutze ich bei Artikel immer die Zusammenfassung, um dort den Text für die HTML-Description einzugeben. Diese Zusammenfassung kann man dann mit the_excerpt_rss() ganz wunderbar als HTML-Meta-Description verwenden.

Bei statischen Seiten ist das allerdings nicht so einfach möglich. Ein Workaround um trotzdem eine Description angeben zu können, sind die Spezialfelder (Custom Fields). Dort habe ich einfach ein Feld description angelegt und dort die Beschreibung hinterlegt.

Die Schwierigkeit besteht jetzt jedoch darin im Kopfbereich außerhald des WordPress-Loops an die Meta-Felder zu kommen. Ein Blick in die WordPress-Funktionsreferenz hilft da aber schnell weiter. Die Funktion get_post_meta kann von beliebigen Seiten und Posts die Spezialfelder auslesen.

Leider benötigt die Funktion die Post-ID der Seite. Ich lese diese wiederum mit der Funktion get_page_by_title aus. Der Titel der Seite kann außerhalb des Loops per get_the_title ermittelt werden.

Das ganze Beispiel sieht dann z.B. so aus:

if (is_page()) {
  $current_page = get_page_by_title(get_the_title());
  echo (String) get_post_meta($current_page->ID, 'description', true);
}

Mit den Meta-Keywords können Sie genauso vorgehen und die Keywords in einem eigenen Feld abspeichern.

Wenn Sie Fragen haben oder eine bessere Lösungen kennen, hinterlassen Sie bitte einen Kommentar.

Update: Man kann auch einfach den Auszug für Seiten in WordPress aktivieren.

Liebe cmsdev.de und meshed.de Besucher

Ab sofort wird aus cmsdev.de der meshed.de Content Management Blog.

Wenn Sie eigentlich cmsdev.de erreichen wollten und nun auf meshed.de gelandet sind, dann hat das den Grund, dass ab sofort die Domain cmsdev.de in der Form nicht mehr existieren wird.

Alle Inhalte die bisher dort erreichbar waren, sollten nun auf meshed.de erreichbar sein. Es könnte sein, dass an der ein oder anderen Stelle noch kleinere Probleme auftreten. Bitte senden Sie in diesem Fall eine E-Mail an tobias@meshed.de.

Ich wünsche Ihnen viel Spaß.

Abonnieren Sie den meshed News Feed!

WordPress-Plugin: Feedburner Subscribers Shortcode 0.1

Automatisch die Anzahl der Feedburner Subscribers in Artikeln und dem Feed per Shortcode anzeigen.

Heute gibt es mein drittes offizielles WordPress-Plugin. Ähnlich wie das Amazon Text Links WordPress Plugin kann man mit Shortcodes die Inhalte von Posts automatisch erweitern.

Der Shortcode des Feedburner Subscribers Shortcode Plugins fügt automatisch die Anzahl der Feedburner Subscriber in den Artikel ein.

Anforderungen

Das Plugin benötigt WordPress 2.5 und PHP 5 mit der SimpleXML-Erweiterung (in der Regel bei aktuellen Hosting-Paketen enthalten).

Darüber hinaus muss die Awareness API für Ihren Feed aktiviert sein. Gehen Sie dazu in Ihren Feedburner-Account und wählen Sie den entsprechenden Feed aus. Im Untermenü Publicize können Sie unter dem entsprechenden Menüpunkt die Awareness API aktivieren.

Installation

Einfach das Feedburner Subscribers Shortcode Plugin herunterladen und aktivieren. In den Einstellungen erscheint dann ein neuer Menüpunkt mit dem Namen Feedburner Subscribers Shortcode. Dort geben Sie einfach die von Ihnen gewählte Feedburnder URI ein. Bei http://feeds2.feedburner.com/cmsdev wäre das cmsdev. Fertig!

Nutzung

Das Plugin stellt den Shortcode fbss_subscribers zur Verfügung. Es sind die Attribute prefix und suffix möglich.

Das Attribut prefix bestimmt den Text, der vor der Anzahl der Abonnenten stehen soll – suffix den Text dahinter. Wenn Sie beide Attribute weglassen, wird nur die Anzahl der Abonennten angezeigt. Kann die Anzahl nicht ermittelt werden, wird nichts ausgegeben. Ich empfehle bei der Gestaltung der Texte ein darauf zu achten.

Beispiel:

“Abonnieren Sie den Fresh Apps News-Feed [fbss_subscribers prefix=" wie " suffix=" andere"/]!” gibt z.B. aus Abonnieren Sie den Fresh Apps News-Feed wie 6 andere!

In meinem Blog Fresh Apps gibt es ein Demo-Artikel.

Anmerkungen/Einschränkungen

Derzeit wird die Anzahl einmal am Tag ermittelt. Das geschieht immer zum Tageswechsel. Die Anzahl wird dann innerhalb von WordPress zwischengespeichert. Dadurch wird sowohl Traffic als auch CPU-Last gespart. Für zukünftige Versionen ist geplant diesen Zeitpunkt konfigurieren zu können.

Ich würde mich über zahlreiche Kommentare und Verbesserungsvorschläge freuen. Helfen Sie auch das Plugin bekannt zu machen, indem Sie Links auf diese Seite setzen.

Abonnieren Sie den meshed News-Feed.

WordPress-Plugin: Amazon Text Links 0.1

In WordPress mit Shorcodes automatisch zu Amazon verlinken und Produkteigenschaften ermitteln.

Ich habe soeben mein zweites öffentliches WordPress-Plugin fertiggestellt. Ich denke aber, dass noch einige kleine Fehler enthalten sind. Über zahlreiches Feedback würde ich mich sehr freuen. Aber nun zum Plugin.

artikel1

Mit dem Amazon Text Links Plugin für WordPress kann man mit Shortcodes automatische Affiliate-Links zu Amazon erstellen. Es bietet außerdem die Möglichkeit Produkteigenschaften, z.B. Preis, Bild etc. per Shortcode in ein Post einzubauen.

Anforderungen

Es setzt technisch gesehen PHP 5 und WordPress 2.5 voraus. Man benötigt außerdem einen Amazon-Affiliate-Account und entsprechende Partner-ID und einen Amazon Webservice Account.

Einschränkungen

Derzeit lassen sich nur der US-Store und der deutsche Amazon-Store abfragen.

Installation

Einfach das Amazon Text Links Plugin herunterladen und aktivieren. Wenn das Plugin erfolgreich aktiviert wurde, befindet sich in den Einstellungen ein neuer Menüpunkt “Amazon Text Links”. Dort können Sie Ihre Amazon-Partner-ID und AWS-Developer-ID eingeben, zusätzlich sollten Sie den entsprechenden Amazon-Store auswählen.

amazon-text-links-conf1

Nutzung

Das Plugin stellt derzeit 3 Shortcodes zur Verfügung:

ails_detail

Mit ails_detail können Sie eine Link zu einer Detailseite im Amazon-Store erstellen. Es benötigt den Parameter asin. Das entspricht der ASIN des Produktes.

Beispiel: [ails_detail asin="B001ET225M"]Peter Fox[/ails_detail]

Der Text zwischen dem Shortcode wird, wenn möglich, zu der entsprechenden Produktseite verlinkt.

ails_image

Mit ails_image können Sie eine Produktabbildung eines Artikel in den Artikel integrieren. Der Shortcode benötigt zwei Parameter asin und size. Der erste entspricht wieder der ASIN des Artikels. Der Parameter size kann die Werte small, medium und large annehmen. Wird keine Größe angegeben, ist der Default-Wert small.

Beispiel: [ails_image asin="B001ET225M" size="medium"]Peter Fox Cover[/ails_image]

Der Text zwischen dem Shortcode wird automatisch zu Title- und Alt-Attribut des Bildes.

ails_detail_custom_text

Mit ails_detail_custom_text können Sie einen Link zu einer Produktseite erstellen. Die Besonderheit ist, dass Sie Produktattribute automatisch auslesen und in den Text einfügen können.

Der Shortcode benötigt zwei Parameter: asin und text. Der Parameter asin entspricht wiederum der ASIN von Amazon. Das Attribut text gibt an, wie der Ausgabetext formatiert werden soll. Dazu gibt es folgende Platzhalter:

  • list_price: Listen- bzw. Hersteller-Preis des Produktes
  • used_price: Günstigster Gebrauchtpreis
  • offer_price: Günstigster Angebotspreis (Neuware)
  • title: Titel des Produktes
  • text: Text der zwischen den Shortcodes steht
  • small_image: URL des kleinen Bildes
  • medium_image: URL des mittleren Bildes
  • large_image: URL des großen Bildes
  • (nur in Deutschland) ean: EAN-Nummer des Produktes
  • … weitere folgenden in den nächsten Versionen.

Die Platzhalter müssen in senkrechten Strichen angegeben werden, z.B. |list_price|. Nun zur Praxis:

Will ich zum Beispiel Peter Fox Tickets oder CDs verkaufen:[ails_detail_custom_text asin="B001ET225M" text="|text| (neu ab |offer_price|)"]Peter Fox Stadtaffe[/ails_detail_custom_text]

erzeugt einen Link, der folgenden Text enthält: Peter Fox Stadtaffe (ab EUR 14,15)

Bei allen Shortcodes gilt: Wenn ein Produkt nicht gefunden wurde oder ein Fehler auftritt, wird der Text zwischen den Codes ausgegeben.

Ich bitte um viel Feedback und weitere Anregungen. Bitte helfen Sie auch das Plugin bekannt zu machen, indem Sie zahlreich auf diese Seite verlinken.

Abonnieren Sie auch den News-Feed.