a-blog cmsでOGPのテンプレートをいじりつつ、og:typeについて考えた
このサイトのOGPのテンプレート
<meta property="og:locale" content="ja_JP" /> <!-- BEGIN_MODULE Touch_Entry --> <meta property="og:title" content="<!-- BEGIN_MODULE Entry_Body --><!-- BEGIN entry:loop -->{title}[striptags]<!-- END title:veil --><!-- END entry:loop --><!-- END_MODULE Entry_Body -->"> <meta property="og:type" content="article"> <!-- BEGIN_MODULE Entry_Summary id="ogpSummary" --> <!-- BEGIN unit:loop --><!-- BEGIN entry:loop --> <!-- BEGIN image:veil --><meta property="og:image" content="%{BLOG_URL}%{ROOT_DIR}{path}"><!-- END image:veil --> <!-- BEGIN noimage --><meta property="og:image" content="%{BLOG_URL}%{CURRENT_THEMES_DIR}images/og-image.png"/><!-- END noimage --> <meta property="og:description" content="{userSummary}[striptags]"/> <!-- END entry:loop --><!-- END unit:loop --> <!-- END_MODULE Entry_Summary --> <!-- END_MODULE Touch_Entry --> <!-- BEGIN_MODULE Touch_Index --> <meta property="og:title" content="%{BLOG_NAME}"> <meta property="og:type" content="website"> <meta property="og:description" content="%{META_DESCRIPTION}" /> <meta property="og:image" content="%{BLOG_URL}%{CURRENT_THEMES_DIR}images/og-image.png"/> <!-- END_MODULE Touch_Index --> <!-- BEGIN_MODULE Touch_Top --> <meta property="og:title" content="%{BLOG_NAME}"> <meta property="og:type" content="website"> <meta property="og:description" content="%{META_DESCRIPTION}" /> <meta property="og:image" content="%{BLOG_URL}%{CURRENT_THEMES_DIR}images/og-image.png"/> <!-- END_MODULE Touch_Top --> <meta property="og:url" content="%{PERMALINK}"> <meta property="og:site_name" content="%{ROOT_BLOG_NAME}"> <meta property="fb:app_id" content="253792787974404">
ごそっと出すと何がなんだかですが、上から順に、エントリーだった場合、一覧ページ(カテゴリーとかタグとか)だった場合、トップページだった場合と、タッチモジュールで出し分けています。
エントリーだった場合(3行目〜13行目)
- 記事のタイトルをEntry_Bodyで表示
- タイプは「article」で
- 画像は、記事に画像がある場合は、メイン画像をEntry_Summaryで表示。ない場合は代替画像を
- 説明は、カスタムフィールドに設定している記事概要{userSummary}を表示
タイトルについて、グローバル変数でも出せますが、タイトルにHTMLタグを使う可能性があるので、あえてEntry_Bodyで。グローバル変数には校正オプションでHTMLタグを除去できません。 画像のEntry_Summaryは、モジュールIDを設定して、その記事の画像だけが出るようにしています。
一覧だった場合(15行目〜20行目)
- タイプは「website」で
- 画像は代替画像を選択
- 説明は、サイトの説明をグローバル変数で表示
トップだった場合(22行目〜27行目)
- タイプは「website」で
- 画像は代替画像を選択
- 説明は、サイトの説明をグローバル変数で表示
<meta property="og:locale" content="ja_JP" /> <meta property="og:title" content="a-blog cmsでOGPのテンプレートをいじりつつ、og:typeについて考えた"> <meta property="og:type" content="article"> <meta property="og:image" content="https://www.penpale.jp//archives/001/201307/51e7be64cb015.png"> <meta property="og:description" content="このサイトで使っている、OGP(Open Graph Protocol)のa-blog cms用のテンプレートです。ついでに、og:typeについて考えてみました。"/> <meta property="og:url" content="https://www.penpale.jp/blog/ablogcms_ogp_sample.html.html"> <meta property="og:site_name" content="ペンギンパレット-横浜のウェブサイト・ホームページ制作"> <meta property="fb:app_id" content="253792787974404">
出力するとこんな感じになります。
ググってみると、OGP、特にog:typeについては以前から疑問を持っている方が多いようで。
http://ogp.meをみると、typeには、「article」「book」「profile」「website」があります。
少し前の記事だと「ブログの場合は、og:typeは"blog"って設定しようぜ」と書いてあるブログがありますが、今はその「blog」が見当たりません。「website」に統合されたんでしょうか。
まあ、そこをあまり細分化する意味ないですもんね。
いろいろみてみると、皆さんが疑問に思ってるのは、websiteとarticleの境目はどこらへんなのか?というところのようです。見る限り、具体的な答えは見つかりませんでした。
> website -
> No additional properties other than the basic ones. Any non-marked up webpage should be treated as og:type website.
ogp.meにこう書いてあります。
「付加情報がない場合に。non-marked upのウェブページは、websiteとして扱うべき。」
non-marked upって、マークアップされてないページなんて無いじゃんと思うんですが、これは、機械的に作られたページって意味でしょうか。
そうすると、ブログの場合は、記事ページのみarticle、それ以外のページはwebsiteということになります。
「article」という名前からすると、CMSの有無にかかわらず、ページのテーマが個別の話題である場合はarticle、それ以外はwebsite。こうするのがいい感じかな?