+1向けにMicrodataの修正

Google +1ボタンMicrodataを読んでくれるんだけど、HTMLありきでメタデータの注釈をつけてあとはお任せでなんとなかなるわけではない。例えばBlogBlogPostingを組み合わせた形でMicrodataによる注釈を行って、それを一覧ページとpermalinkで使いまわすと+1ボタンからは両者の区別がつかなくなる。そりゃそうか。

このウェブログではpermalinkではArticleに切り替えるようにして、うまく解釈して貰えるようにはした。ただそもそもセクション単位でメタデータを管理できるMicrodataとURL単位でメタデータを解釈しようとする+1ボタン(やいいね! ボタン)は相性が良くないと思うので、どちらかを捨てる方が精神衛生上良さそう。

マークアップする段階でitemprop="description"とかimg要素にitemprop="image"とかは面倒すぎるので、Blosxom側で

sub story {
  my($pkg, $path, $filename, $story_ref, $title_ref, $body_ref) = @_;

  $$body_ref =~ s/<p>/<p itemprop="description">/;
  $has_image = 0;

  if ($$body_ref =~ m!<img!) {
    $has_image = 1;
    $$body_ref =~ s/<img (.*?)>/<img $1 itemprop="image">/;
  }

  return 1;
}

とかして最初の段落をdescriptionにしたり、画像のあるエントリーの場合はimageを割り当てるようにした。単独のプラグイン化する程ではなかったので、いろんな機能をとりあえずぶち込んでる便利プラグインに混ぜてる。こんなの作って誤魔化すことが多いのでflavourがロジックだらけの魔窟でひどい。

メタデータ絡みのことやってると徒労感が……という一方で妙な達成感があってタチ悪い。