Ik heb een script dat facebook berichten laat zien op mijn website. Mijn probleem: ik wil niet alle berichten laten zien, alleen de berichten van de pagina eigenaar en waar message niet leeg is. Daarnaast limit ik de array ook nog op 6. Het probleem daarmee is dat de array wordt gelimit op de gehele array, en de check op de eigenaar/lege message wordt daarna pas uitgevoerd, waardoor de code niet werkt zoals de bedoeling is.
Wat kan ik het beste doen? Ik zit eraan te denken eerst alle berichten op te halen, dan op die array de check uit te voeren en uit dat resultaat een nieuwe array maken die bruikbaar is zoals ik wil, ik weet alleen niet hoe ik dat netjes doe.
De reden dat ik dit doe is omdat ik twee elementen heb waar de berichten in worden geladen, het eerste element heeft de twee eerste array waarden (twee grote berichten) en daarnaast is een element met een lijst van verdere berichten. Het is dus de bedoeling dat die lijst start op positie 2 in de array (0,1 in het eerste element, 2,3,4 etc in het tweede element).
Mijn code (voor de twee grote facebook berichten:
<?
function fetchUrl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
// You may need to add the line below
// curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
$feedData = curl_exec($ch);
curl_close($ch);
return $feedData;
}
//App Info, needed for Auth
$app_id = "secret";
$app_secret = "secret";
//Retrieve auth token
$authToken = fetchUrl("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=23523523523&client_secret=secret");
$json_object = file_get_contents("https://graph.facebook.com/v2.6/2e6t234634634634634/posts?fields=full_picture%2Cmessage%2Cstory%2Cpermalink_url%2Cupdated_time%2Cfrom&access_token=accesstoken");
$feedarray = json_decode($json_object);
$f = 0;
foreach ( $feedarray->data as $key => $feed_data )
{
if($feed_data->full_picture != ''){
$fbimage = $feed_data->full_picture;
}else{
$fbimage = 'cms/images/placeholder/placeholder.jpg';
}
if($feed_data->message > 270){
$shortstrfb = substr($feed_data->message, 0, 270) . '...';
}else{
$shortstrfb = $feed_data->message;
}
if($feed_data->message != ''){
$f++;
}
if($f > 2){
break;
}
if($feed_data->message != '' && $feed_data->from->name == 'page owner'){
$facebookfeed .= '
<div class="col-lg-4 marg-lg-b30">
<div class=" widget">
<div class="card latest-news latest-news--block">
<a href="'.$feed_data->permalink_url.'" class="latest-news__image">
<img src="'.$fbimage.'" width="360" height="204" srcset="'.$fbimage.' 360w, '.$fbimage.' 830w" sizes="(min-width: 992px) 360px, calc(100vw - 30px)" class="card-img-top " alt="nieuws">
</a>
<div class="card-block latest-news__content js-col-height-news">
<time class="latest-news__date">'.date("d-m-Y",strtotime($feed_data->updated_time)).'</time>
<h4 class="card-title latest-news__title">
<a href="'.$feed_data->permalink_url.'" target="_blank"><i class="fa fa-facebook-official" aria-hidden="true"></i> Bekijk</a>
</h4>
<div class="card-text latest-news__text">
'.$shortstrfb.'
</div>
</div>
</div>
</div>
</div>';
}
}
echo $facebookfeed;
?>
En de loop voor de lijst:
<?
$c = 0;
foreach ( $feedarray->data as $key => $feed_data1 ){
if($feed_data1->message != ''){
$c++;
}
//Na array waarde 6 stop de loop
if($c > 6){
break;
}
if($feed_data1->message != '' && $feed_data1->from->name == 'page owner'){
if ($key < 7) continue;
$facebookfeed1 .= '
<a href="'.$feed_data1->permalink_url.'" target="_blank" class="card latest-news latest-news--inline">
<div class="card-block latest-news__content">
<h4 class="card-title latest-news__title"><i class="fa fa-facebook-official" aria-hidden="true"></i> Bekijk op Facebook</h4>
<p class="facebooktext">'.$feed_data1->message.'</p>
<time class="latest-news__date" datetime="2016-04-22T10:06:21+00:00">'.date("d-M-Y",strtotime($feed_data1->updated_time)).'</time>
</div>
</a>
';
}
}
echo $facebookfeed1;
?>
1.387 views