0

私はおそらくこれについて間違った方法または難しい方法で進んでいると信じています. 過去 24 時間、投稿を読んだり、実験を行ったりして、必要な結果を得ようとしました。ここでさまざまな質問からさまざまなコードスニペットを取得し、最終的にある程度機能するものを取得しました。配列とオブジェクトについて読んだことさえありますが、どのルートに進むべきかについてまだ混乱しています。

私は現在JS-SDKを使用していると思います。(Simple-Facebook-Connect wordpress プラグインがインストールされています) しかし、それが原因で自分がしていることを実行できるかどうかはわかりません。

要するに、Facebook の「ページ」から自分の Web サイトにアルバムを表示したいと考えています。次の方法で適切なデータをすべて取得できます。

<?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つの質問には多すぎるかもしれませんが、次の場合:

  1. 表示するアルバムの数を選択できます。
  2. 最小限の画像しかない場合を除き、アルバムを表示しないでください。
  3. ページネーション
  4. アルバムをクリックすると、そのアルバムの画像を表示する私のサイトの別のページに移動します。

FQL について読んだことがありますが、正直なところ、上記の内容を取得するのは非常に困難であり、一部が機能する理由についてまだ混乱しています。

4

1 に答える 1

1

あなたの例では、問題は、表示配列の最初と 2 番目 (0,1) の要素のみを foreach ループに書き込んでいることです。

ここにはさまざまなオプションがあります。ある種の 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 グラフ クエリで順序を指定できない限り、常に必要な結果が得られるとは限りません。

于 2012-04-28T11:03:32.247 に答える