LokkaにFacebook OGP metaタグを追加する

OGPタグ用のHelperをつくる

lib/lokka/helpers.rb

に meta\_ogp メソッドを追加する。

def meta_ogp
  s = yield_content :meta_ogp
  s unless s.blank?
end

さらに、OGPタグを読み込む位置でこのメソッドを呼び出すために、

public/theme/theme-name/layout.erb

のmetaタグ周辺に追加した。

<%= meta_ogp %>

これでLokkaの各Viewで
content_for :meta_ogp

が使えるようになる。

各エントリの情報をOGPタグに設定して読み込む

public/theme/theme-name/entry.erb

の末尾に以下を追加する。

<% content_for :meta_ogp do %>
  <meta property="og:type" content="article"/>
  <meta property="og:site_name" content="<%= @site.title %>"/>
  <meta property="og:url" content="<%= base_url + @entry.link %>"/>
  <meta property="og:title" content="<%= @entry.title %>"/>
  <meta property="og:description" content="<%= @entry.snippet_body %>"/>
<% end %>

og:description

の値に設定されている

@entry.snippet_body

は、本文の先頭200文字を返すメソッド。
コードは以下の通り。
lib/lokka/entry.rb

のEntryクラスに追加する。

def snippet_body
  @snippet_body ||= Nokogiri(
    "<html><head></head><body>#{self.body}</body></html>"
    ).text[0..200]
end

self.body

には、各MarkupでHTMLコード化された本文が入ってるので、
それをHTML文書にしてNokogiriで解析してテキスト化してる。

これで、各エントリのページにOGPが追加された。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>