2

ネットで解決策を探しましたが、どこにも行けないようです。

私のページ(php)は、ページに1つのURL(たとえば、www.mysite.com)をロードしています。音楽(アルバム)のいくつかの検索オプションを実行でき、トラックが表示されます。(ページを更新せずに)。情報はデータベースから取得されます。したがって、URLは同じままです。この検索プロセスでは、Facebookのメタタグ(説明、URL、タイトル)は同じままです。これは、ページをリロードすることはなく、コンテンツをdivにロードするだけだからです。

アルバムを「いいね」して、バックリンクできるようにしたいと思います。そこで、次のURLを使用してアルバムをロードする関数を作成しました。www.mysite.com?album = 12345このURLでポップアップを表示して、これを共有できます。したがって、このURLに移動すると、コンテンツはurlパラメーターに基づいて自動的にロードされます。

そしてこの場所(パラメータ?album = 12345のURLを見ることができます)にも「いいね」ボタンを表示したいと思います。(私はURLを生成したので、コードでこれを使用します:)

echo '<div style="overflow:visable" class="fb-like" data-href="http://mysite.com/?album='.$albumid.'" data-send="false" data-width="300" data-show-faces="false">?</div>';

これまでのところ機能します...(ボタンを有効にするために解析コードを追加した後)ただし、「いいね」ボタンはデフォルトのメタタグの説明やタイトルなどを取ります。このアルバムやアーティストでは特にないので、一意ではありません。

注:ヘッダーからmeta [property = og:url]を削除すると、?albumパラメーターを使用してボタンを正しいURLにバックリンクさせることができます。そうしないと、サイトmysite.comのデフォルトのルートに戻ります(これにより、lintツールで欠落しているメタでエラーが発生します)

私はこの同じ関数に次のようなものを追加しようとしました:

$("meta[property=og\\:url]").attr("content", "http://mysite.com/?album=<?php echo $albumid; ?>");
$("meta[property=og\\:title]").attr("content", "<?php echo $artistname; ?>");
$("meta[property=og\\:description]").attr("content", "<?php echo $albumname; ?>");

いいねボタンに正しい説明などを表示させるために、メタタグが変更されるようにこれを行いました。ただし、これは機能しません。Facebookがページをスクレイプすることを理解しています(私はlintツールなどを使用しました)が、javascriptを実行することはないため、メタタグはデフォルトのままになります(最初にページをロードするとき)

それぞれのHTMLページ(データベース内の数百万のアルバム...)を作成せずに、独自の説明(アルバム名など)を使用して、ユニークな「いいね」ボタンを作成するにはどうすればよいですか?

私はそれが理にかなっていることを願っています。

私はこれを理解できないようです、助けてください:-)


以下のコメントに基づいて、私は次の解決策を使用しました。

URL(params?alb_id = 12345)を開いたら、適切なfbメタタグを作成する必要があります。いいねボタンがその仕事をするのに十分です。

4

2 に答える 2

0

jqueryを使用してメタタグを設定するところまでは、ロジックは問題ありません。これらは PHP を使用して設定する必要があります。ご想像のとおり、スクレーパーは jquery を実行しませんが、既に PHP でカスタマイズされたメタ タグが提供されている場合は、それらを使用します (提供されているとおり)。

リクエストされた albumId に応じて、サーバー側で og:tags を準備するだけで動作するはずです。すぐにはうまくいかないかもしれませんが、以前はスクレーパーで時折キャッシュの問題が発生していたことを覚えています。

つまり、index.php?album=123 は、index.php?album=321 とは異なる og:tags のセットをスクレイパーに送信します。それらをサーバー側に設定するだけです。

<meta property="og:title" content="<?php echo $artistTitle; ?>"/>
于 2012-11-13T11:01:41.120 に答える
0

それぞれの html ページ (データベース内の何百万ものアルバム...) を作成せずに、独自の説明 (アルバム名など) を使用して、独自のいいねボタンを作成するにはどうすればよいですか?

Open Graph オブジェクトはURLであるため、できません(それぞれが URL によって表現/識別されます)。

1 つの URL == 1 つの Open Graph オブジェクト。

しかし、アルバムごとに 1 つの URL を持つことのどこに問題があるのでしょうか? すべてパラメーターを使用して動作するため、アルバムの URL ごとに手動でページを作成する必要はありません…</p>

于 2012-11-13T10:47:53.550 に答える