0

我相信我可能会以错误的方式或艰难的方式来解决这个问题。在过去的 +24 小时里,我一直在阅读帖子并尝试获得我想要的结果。我从这里的不同问题中获取了不同的代码片段,直到我终于得到了一些有用的东西。我什至读过关于数组与对象的文章,但仍然对我应该走的路线感到困惑。

我认为我目前正在使用 JS-SDK。(我安装了 Simple-Facebook-Connect wordpress 插件)但我不确定这是否是我能够做我正在做的事情的原因。

说到重点,我想在我的网站上显示来自 Facebook“页面”的专辑。我能够通过以下方式获取所有正确的数据:

<?php

$fbc_jsonurl  = "https://graph.facebook.com/(My_Page_ID)/albums";
$fbc_user = json_decode(file_get_contents($fbc_jsonurl));
//$fbc_user = json_decode(file_get_contents($fbc_jsonurl),true); Was experimenting with the "true" statment since some people were using it but then none of my code worked right
print_r($fbc_user);

?>

上面的代码能够抓取所有数据并将其打印到屏幕上。

所以我继续使用下面的代码,这段代码基本上抓取了所有专辑的名称,只将专辑名称打印到屏幕上,没有其他信息:

foreach($fbc_user->data as $fbc_testing) {
    $fbc_albums[] = $fbc_testing->name;
}
print_r($fbc_albums);

所以我尝试并尝试更进一步并使用以下代码:

foreach($fbc_user->data as $fbc_testing) {
    $fbc_albums[0] = $fbc_testing->name;
    $fbc_albums[1] = $fbc_testing->link;

}
print_r($fbc_albums);

此代码显示专辑标题和该专辑的正确链接。问题是,这一次它只显示了 1 个列表而不是所有列表。

我首先要做的是创建一个 HTML 有序列表,其中显示专辑标题、专辑链接、专辑描述、专辑封面图片以及专辑中有多少张图片。不需要漂亮,因为我可以使用 CSS 来修复它。

也会很棒,但对于这里的这个问题可能太多了,但是如果:

  1. 我可以选择要显示的专辑数量。
  2. 不要显示相册,除非它有最少数量的图像。
  3. 分页
  4. 单击相册会将您带到我网站上的另一个页面,该页面显示该相册中的图像。

我已经阅读了 FQL,但老实说,要获得上面的内容非常困难,而且我仍然对其中一些有效的原因感到困惑。

4

1 回答 1

1

在您的示例中,问题在于您只在 foreach 循环中编写显示数组的第一个和第二个 (0,1) 元素。

您在这里有许多不同的选择。您可以创建某种 FacebookAlbum 类来存储所有数据,您可以像现在一样简单地将数据放入一个数组中,或者您可以将数据留在 facebook 返回的对象中

如果您只想获取每个专辑的名称和链接,请修改您的代码,如下所示:

foreach($fbc_user->data as $fbc_testing) {
    $fbc_albums[] = Array("name" => $fbc_testing->name, "link" => $fbc_testing->link);
}
print_r($fbc_albums);

显然,您正在寻找更复杂的解决方案。这是一个示例,您可以采取一些措施来涵盖前几点。

<?php

function displayAlbums($albums, $numberToShow, $minPhotos) {
    $count = 0;
    foreach ($albums->data as $a) {
        if ($count > $numberToShow)
            return;
        if ($a->count > $minPhotos) {
            //Print out your html.
            //Album name is $a->name, link is $a->link etc

            $count++;
        }
    }
}

$fbc_jsonurl  = "https://graph.facebook.com/(My_Page_ID)/albums";
$fbc_user = json_decode(file_get_contents($fbc_jsonurl));
displayAlbums($fbc_user,10,20); // Show the first 10 albums with at least 20 photos.
?>

显然,在这样的解决方案中,您只会输出 Facebook 订购的“前”10 张专辑,因此除非您可以在 Facebook Graph 查询中指定顺序,否则您可能不会总是得到您想要的结果。

于 2012-04-28T11:03:32.247 回答