2011-10-05 25 views
6

私は、ユーザーが複数のオブジェクトに対してアクションを開始する必要があるページを持っていますが、Facebookのデザインでは、必要なメタプロパティタグを使用して1ページあたりオブジェクトを1つに制限します。同じページの複数のFacebook opengraphオブジェクト

誰でもこの問題の解決策を見つけましたか?

答えて

0

FBは、オブジェクトに割り当てたURLを使用して情報をスクレイプします。この周りの唯一の方法は、iframeやいくつかのアプローチで類似したオブジェクトを表示させることです。オブジェクトが直接参照された場合は、結合されたオブジェクトビューの適切なラッパーページにリダイレクトする方法が必要です。すべてが同じドメインにある限り、親を介して子フレーム間の通信のためのメソッドを試すことができます。

12

Open GraphはURLをオブジェクト識別子として使用するため、1ページに複数のオブジェクトを含めることはできません。オブジェクトです。

代わりに、オブジェクトごとにURLが必要です。そのURLのHTMLには正しいOGマークアップが含まれている必要があります。

複数の類似ボタンを1つのページに配置し、それぞれのボタンに 'href'パラメータを指定することで、それぞれのオブジェクトをポイントすることができます。

あなたは、彼らがこれらの各オブジェクトへのリンクをクリックしたときに、ユーザーが同じページに戻って終わるしたい場合は、あなたがこれを行うことができますが、そのビットtricksy ...

あなたにオブジェクトページ、サーバー上で、受信したリクエストのユーザーエージェントを調べます。ユーザーエージェントに文字列 'facebookexternalhit'が含まれている場合は、HTMLとOGマークアップをレンダリングします。これがFacebookスクレイパーがあなたのページを見る方法です。ユーザーエージェントにこの文字列が含まれていない場合は、ユーザーに表示させたいページに302文字を入力します。

結果?多くのオブジェクトが、ユーザーが表示できるページは1つだけです。勝つ。

そして、これは、あなたがそれを行うだろうかです:

<?php 

if ($_SERVER["HTTP_USER_AGENT"] != "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)") { 
    redirect('http://www.somesite.com', 302); 
} 
function redirect($url, $type=302) { 
    if ($type == 301) header("HTTP/1.1 301 Moved Permanently"); 
    header("Location: $url"); 
    die(); 
} 

?> 

<html... 
2

https://stackoverflow.com/a/7659770/1354666これは素晴らしい答えですが、それについていくつかのことは私のためにうまく機能していないので、私は選択肢を試してみました。

ボタンタグにhrefを使用する代わりに、私はIframeを使用しています。

  1. OGオブジェクトごとに一連のhtmlページを作成します。
  2. それぞれこれらのページには、FacebookブックAPIを呼び出すために必要なFacebookヘッダースクリプトとFacebookブックルート要素が追加されています。
  3. これらのOGオブジェクトのそれぞれに対してアクションを呼び出すフォーム入力要素を作成します。これらの要素のそれぞれにidを与えます。
  4. あなたがIframeかページかを判断する小さなスクリプトを含めると、ユーザーがFacebookフィードをクリックしたときにユーザーをホームページにリダイレクトすることができます。
  5. 最後に、ページ上にフレームを設定しないスタイルでサイズのiframeを配置し、スクロールしないように設定します。フォーム要素のIDを使用して、iframeビューに表示するアクションを指定します。

私はまだ携帯電話の出力でこれを改良しようと努力していますが、ほとんどのブラウザではそうであるように機能しています。

関連する問題