2012-01-30 21 views
0

私は自分のウェブサイトやFacebookにリンクを張り、そこにいくつかのメタデータを入れようとしています!私の目標は、このデータを管理することです:ogタグを動的に追加してレンダリングできますか?

<meta property="og:title" content="MY_PAGE_TITLE" /> 
<meta property="og:description" content="MY_DESCRIPTION_TEXT" /> 

残念ながら、(PHPの)私のWebアプリケーションではうまく構造化ではない、と私は正しいMVCを定義していません!非常に手続き的なので、メインのHTMLヘッダーセクションのレンダリングの後、データベースから、これらのメタタグに置くべき情報を抽出します。

だから、私が試したことはこれです:

<script type="text/javascript"> 
    $('head').append("<meta property=\"og:title\" content=\"MY_PAGE_TITLE\" />"); 
    $('head').append("<meta property=\"og:description\" content=\"MY_DESCRIPTION_TEXT\" />"); 
</script> 

<div id="fb-root"></div> 
<script>(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/it_IT/all.js#xfbml=1"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 
<fb:like href="<?=$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]?>" send="false" layout="button_count" width="130" show_faces="false"></fb:like> 

しかし、実際には、それはdoesntの作品!つまり、メタタグを頭に付け加えてみてください。

あなたはそれを行うための戦略を知っていますか?私が言うように、私が挿入したいテキストは(ウェブサイトの間違った編成のために)頭の部分の後ろに来るので、私は頭の上にそれらを直接挿入するオプションを避けるでしょう。

私は別の解決策を信じています。

+1

ドキュメントがロードされた後に ''タグを追加すると、 ''タグの性質を考慮してください。 – Pointy

答えて

5

あなたの構造を変更する以外の方法はありません。あなたのjavascriptでもog:タグが処理されない理由は、facebookがjavascriptをレンダリングしないということです。静的なHTMLと同じようにページを尋ねて、上部からOGタグを読み込みます。

唯一の選択肢は、構造を変更して出力前にコンテンツを読み込むことです。あなたはMVCに変更する必要はありません。ヘッドの前にコンテンツをロードするだけで、作業のヒープを保存して作業を続けることができます。

+0

実際に、頭にメタタグを追加すると、(追加後に実行される)facebookレンダリングで利用できるはずです。私はそれがうまくいかない理由を理解していません:) – markzzz

+0

@markzzz FacebookのパーサーはJavaScriptを実行していません。まったく。 JavaScriptがなければ、何も追加されません**どこでも**。 – ceejayoz

+0

そうだと思います!どのようにメタタグを得ることができますか?とにかく、JSなしでは、Facebookのプラグインはまったく動作しませんので、私はこれについて気にしません:) – markzzz

関連する問題