テンプレートにJSON-LDを追加

最新のセマンティック・ウェブ技術であるJSON-LDSerene Bachに実装するため、/lib/sb/Content.pmの1074行目にあるサブルーチンへ以下の下線部のとおり追加した。これで、テンプレート(スキン)のentryブロックに{trackback_auto_discovery}タグを埋め込んでいれば、その場所にJSON-LDが出力されるはず

sub _trackback_auto_discovery
{ # トラックバック自動検出用 rdf 埋め込み
my $cms = shift;
my $entry = shift;
my %var = @_;
return if ($entry->atb == 0); # trackback is not acceptable, so we ignore this.
my $permalink = &_permalink($entry,$var{'cat'},'',$var{'mode'});
my $subject = $entry->subj;
my $author = ( defined($var{'user'}->{$entry->auth}) ) ? $var{'user'}->{$entry->auth}->real : '';
my $summary = $entry->sum;
my $pingurl = $entry->pingurl;
my $creatdate = sb::Time->format(
'time'=>$entry->date,
'form'=>'%Year%-%Mon%-%Day%T%Hour%:%Min%:%Sec%',
'zone'=>$var{'conf'}->value('conf_timezone'),
);
$summary =~ s/\-\-/\-\-/g if ($summary =~ /\-\-/);
my $category = $var{'cat'}->{$entry->cat}->fullname($var{'cat'});
my $cgi = sb::Config->get->value('conf_srv_cgi') . sb::Config->get->value('basic_sb');
my $pid = ( defined($var{'user'}->{$entry->auth}) ) ? $var{'user'}->{$entry->auth}->id : '';

my $auto_discovery = <<"_TRACKBACK_AUTO_DISCOVERY_";
<script type=\"application/ld+json\">
//<![CDATA[
{
\"\@context\": \"http://schema.org\",
\"\@type\": \"BlogPosting\",
\"\@id\": \"$permalink\",
\"url\": \"$permalink\",
\"headline\": \"$subject\",
\"description\": \"$summary\",
\"datePublished\": \"$creatdate\",
\"articleSection\": \"$category\",
\"author\": {
\"\@type\": \"Person\",
\"\@id\": \"$cgi?pid=$pid\",
\"name\": \"$author\",
\"url\": \"$cgi?pid=$pid\"
}
}
//]]>
</script>

<!--
<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"
xmlns:dc=\"http://purl.org/dc/elements/1.1/\"
xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\">
<rdf:Description
rdf:about=\"$permalink\"
dc:identifier=\"$permalink\"
dc:title=\"$subject\"
dc:description=\"$summary\"
dc:creator=\"$author\"
dc:date=\"$creatdate\"
dc:subject=\"$category\"
trackback:ping=\"$pingurl\" />
</rdf:RDF>
-->
_TRACKBACK_AUTO_DISCOVERY_
$cms->tag('trackback_auto_discovery'=>$auto_discovery);
}

その結果、前回記事に対して{trackback_auto_discovery}タグは以下のとおり動作した。同じメタデータだから当然だが、形式がJSONになっただけで、やっていることはRDFとあまり変わらないことがわかった。

<script type="application/ld+json">
//<![CDATA[
{
"@context": "http://schema.org",
"@type": "BlogPosting",
"@id": "http://hirowa.freehostia.com/log/eid115.html",
"url": "http://hirowa.freehostia.com/log/eid115.html",
"headline": "WindowsのGecko系ウェブブラウザ―のフォントを実験",
"description": "古いWindowsのMSゴシックをはじめとする日本語MSフォントは、ClearTypeを効かせられないためウェブブラウザ―で綺麗に描画されない。せめてMozilla Fire...",
"datePublished": "2013-05-05T16:20:25",
"articleSection": "インターネット",
"author": {
"@type": "Person",
"@id": "http://hirowa.freehostia.com/index.cgi?pid=0",
"name": "ヒロ@秋葉原",
"url": "http://hirowa.freehostia.com/index.cgi?pid=0"
}
}
//]]>
</script>
<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://hirowa.freehostia.com/log/eid115.html"
dc:identifier="http://hirowa.freehostia.com/log/eid115.html"
dc:title="WindowsのGecko系ウェブブラウザ―のフォントを実験"
dc:description="古いWindowsのMSゴシックをはじめとする日本語MSフォントは、ClearTypeを効かせられないためウェブブラウザ―で綺麗に描画されない。せめてMozilla Fire..."
dc:creator="ヒロ@秋葉原"
dc:date="2013-05-05T16:20:25"
dc:subject="インターネット"
trackback:ping="http://hirowa.freehostia.com/tb.cgi/115" />
</rdf:RDF>
-->

インターネット | comments (0) | trackbacks (0)
楽天たすけ愛

Comments

Comment Form


Icons:
[icon]

Trackbacks