Twitterカードを追加する
Twitterカードを追加してみましょう。Twitterカードは、記事へのリンクを張るだけで、Twitter上で、要約を掲載できる機能のことです。
ビルドスクリプトを開く
まず最初に、サイトをビルドしているPerlスクリプトを開きます。
lib/Giblog/Command/build.pm
Twitterカード追加のプログラムを追加
「Add meta description」と「Build entry html」の間に「Twitter card」のPerlプログラムを追加します。
# Add meta description $api->add_meta_description($data); # Twitter card { my $meta = $data->{meta}; my $site_url = $config->{site_url}; my $title = $data->{title} || ''; my $description = $data->{description} || ''; my $twitter_card = <<"EOS"; <meta name="twitter:card" content="summary" /> <meta name="twitter:site" content="\@perlzemi" /> <meta name="twitter:title" content="$title" /> <meta name="twitter:description" content="$description" /> <meta name="twitter:image" content="$site_url/images/perlzemi-twitter-card.png" /> EOS $meta .= "\n$twitter_card\n"; $data->{meta} = $meta; } # Build entry html $api->build_entry($data);
こんな風にして、直接Perlプログラムを書き込んで、サイトをカスタマイズできます。
Twitterカードを確認するには
Twitterカードが正しく表示されるかを確認するには、Twitterが提供している「Card validator」を使います。
記事の最初の画像を表示するには?
スマートフォンサイトでは、記事の最初の画像をTwitter Cardに張ることも一般的ですね。
記事の最初の画像を表示したい場合は、以下のようにします。
「Create description from first p tag」と「Read common templates」の間に、最初の画像を取得するPerlプログラムを追加します。
# Create description from first p tag $api->parse_description_from_first_p_tag($data); # Get first image src $api->parse_first_img_src($data); # Read common templates $api->read_common_templates($data);
次にTwitterカードの部分を以下のように記述します。
# Add meta description $api->add_meta_description($data); # Twitter card { my $meta = $data->{meta}; my $site_url = $config->{site_url}; my $title = $data->{title} || ''; my $description = $data->{description} || ''; my $img_src = $data->{img_src}; my $twitter_card = <<"EOS"; <meta name="twitter:card" content="summary" /> <meta name="twitter:site" content="\@perlzemi" /> <meta name="twitter:title" content="$title" /> <meta name="twitter:description" content="$description" /> EOS if (defined $img_src) { $twitter_card .= <<"EOS"; <meta name="twitter:image" content="$site_url$img_src" /> EOS } $meta .= "\n$twitter_card\n"; $data->{meta} = $meta; } # Build entry html $api->build_entry($data);