Facebook Posts auf der Webseite einbinden

Einen einzelnen Post von Facebook auf der Webseite einzubinden ist recht einfach,

Geht über folgenden Schnipsel:
<fb:post href=“URL“> </fb:post> bzw folgende Funktion.
Bildschirmfoto 2015-03-03 um 12.22.32

Will man aber alle aktuellen Posts anzeigen lassen, ist das etwas aufwändiger. #SEO technisch gesehen, ist das nicht unbedingt sinnvoll, aber manchmal brauch man es halt. Dazu habe ich folgende Gute Anleitung gefunden:
http://advitum.de/2013/05/einfache-einbindung-des-facebook-feeds-mit-php/

Es wird das Facebook SDK benötigt:
https://github.com/facebookarchive/facebook-php-sdk

Hab das Script noch etwas angepasst, damit die Beschreibung mit aufgenommen wird und der Titel und die Beschreibung nach einer bestimmten Anzahl an Zeichen gekürzt wird. Und eine maximale Anzahl an Beiträgen.

Bildschirmfoto 2015-03-03 um 12.31.15<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<style>
body {
 background-image: none;
}
figure img {
 float: left;
 margin-right: 10px;
 width: 80px;
}

figure a {
 display: block;
}

.clear {
 clear: both;
 display: block;
 overflow: hidden;
 visibility: hidden;
 width: 0;
 height: 0;
}

</style>
</head>
<body>
<?php
//URL zum Facebook Feed
$url = '/marexx.net/feed';
$cacheName = 'cache/' . md5($url);
$cacheTime = 3600;
//Maximale Anzahl der Beiträge
$limit = 5;
//Anzahl der Zeichen für die Beschreibung
$len = 100;
//Anzahl der Zeichen für den Titel
$titlelen = 80;
if(!is_file($cacheName) || filemtime($cacheName) + $cacheTime < time()) {
 require_once('src/facebook.php');
 $fb = new Facebook(array(
 'appId' => '#######',
 'secret' => '########'
 ));
 
 $rawFeed = $fb->api($url);
 $feed = array();
 $i = 1;
 
 foreach($rawFeed['data'] as $item) {
 $title = false;

//hier könnt ihr euch ausgeben lassen, welche Daten alle von FB übergeben werden.
 //print_r($item);

 if($title === false && isset($item['story']) && !empty($item['story'])) {
 $title = $item['story'];
 $titleret = explode("||||",wordwrap($title,$titlelen,"||||"));
 $title = $titleret[0]." ...";
 }
 if($title === false && isset($item['message']) && !empty($item['message'])) {
 $title = $item['message'];
 $titleret = explode("||||",wordwrap($title,$titlelen,"||||"));
 $title = $titleret[0]." ...";
 }

 $description = false;
 if($description === false && isset($item['description']) && !empty($item['description'])) {
 $description = $item['description'];
 $ret = explode("||||",wordwrap($description,$len,"||||"));
 $description = $ret[0]." ...";
 }
 
  
 $image = false;
 if($image === false && isset($item['picture']) && !empty($item['picture'])) {
 $image = $item['picture'];
 }
 
 $link = false;
 if($link === false && isset($item['link']) && !empty($item['link'])) {
 $link = $item['link'];
 }

 $created_time = false;
 if($created_time === false && isset($item['created_time']) && !empty($item['created_time'])) {
 $created_time = $item['created_time'];
 }
 
 $feed[] = array(
 'title' => $title,
 'link' => $link,
 'description' => $description,
 'image' => $image,
 'created_time' => $created_time
 );

 if ($i++ == $limit) break;
 }
 
 file_put_contents($cacheName, json_encode($feed));
} else {
 $feed = json_decode(file_get_contents($cacheName), true);
}
foreach($feed as $item) {
?>
<figure>

 <?php if($item['link'] !== false) { ?><a href="<?php echo htmlspecialchars($item['link']); ?>"><?php } ?>
 <?php if($item['image'] !== false) { ?><img src="<?php echo htmlspecialchars($item['image']); ?>" alt="" /><?php } ?>
 <?php if($item['title'] !== false) { ?><figcaption><b><?php echo htmlspecialchars($item['title']); ?></b><br><?php } ?>
 <?php if($item['created_time'] !== false) { ?><?php echo htmlspecialchars($item['created_time']); ?><br><?php } ?>
 <?php if($item['description'] !== false) { ?><?php echo htmlspecialchars($item['description']); ?></figcaption><?php } ?>
 <?php if($item['link'] !== false) { ?> <div class="clear"></div></a><?php } ?>

</figure>
<?php
}

?>
</body>

Kleiner Nachtrag, es werden scheinbar keine Beiträge gezogen die zB über ein WordPress Plugin gepostet wurden, sondern nur die, die direkt auf Facebook gepostet wurden.

Mark ist jetzt drauf gekommen, warum mein Beispiel nicht mehr funktioniert, da meine Daten auf einer alten Facebook API basieren. Schade.
Wenn ich wieder bisschen Zeit finde, versuche ich mich an einer aktualisierten version.

 

16 thoughts on “Facebook Posts auf der Webseite einbinden”

Comments are closed.