私のアプリケーションは、データベース レコードの情報を使用して動的に Facebook メタ (og:title, og:title) をレンダリングしています。
ブラウザーから [ソースを表示] をクリックすると、レコードが正しくレンダリングされていることがわかりました。ただし、Facebook デバッガー (https://developers.facebook.com/tools/debug) を使用してまったく同じページを表示すると、メタ タグの値が空になり、データベースから読み取られません。
以前に同様の問題に遭遇した人はいますか? アプリケーションがデータベース レコードをレンダリングするのに十分な速度ではないように思われますか?
コード レイアウト ファイルの内容は次のとおりです。
<?php
// for Facebook
if(!isset($meta_title)) {
$meta_title = 'Default title';
}
if(!isset($meta_location)) {
$meta_location = FULL_BASE_URL.$this->here;
}
if(!isset($meta_image)) {
$meta_image = FULL_BASE_URL.$this->webroot.'img/facebook-icon.gif';
}
if(!isset($meta_type)) {
$meta_type = 'article';
}
if(!isset($meta_des)){
$meta_des = 'Default title';
}
?>
<meta property="og:site_name" content="<?php echo __('SgVoucher'); ?>"/>
<meta property="og:type" content="<?php echo $meta_type; ?>"/>
<meta property="og:title" content="<?php echo $meta_title; ?>"/>
<meta property="og:url" content="<?php echo $meta_location; ?>"/>
<meta property="og:image" content="<?php echo $meta_image; ?>"/>
<meta property="og:description" content="<?php echo $meta_des; ?>"/>
そしてコントローラーで、動的なタイトルを付けるためにデータベース レコードを再試行しました。
//in the controller
$dynamic = $this->Model->find('first'....);
$this->set('meta_title',$dynamic['Table']['field']
しかし、データベースからは正しいタイトルが表示されることはなく、Facebook デバッガーからは常に「デフォルトのタイトル」が表示されますが、[ソースを表示] をクリックすると正しいタイトルになります。
リンクデバッグに役立つ場合、 リンクはhttp://www.sgvoucher.com/deals/view/free_ipad_with_wi-fi_16gb_3rd_generation_giveawayにあります。