Blogger用の関連記事表示機能:FeedRelatedPosts.js
はじめに
Bloggerは、標準で関連記事の機能がありません。LinkWithin, Milliard, GoogleAdSenseなどの外部サービスを利用することで関連記事を表示することができます。ただし、外部サービスを利用すると関連記事が広告ブロッカーにブロックされたり、表示速度の低下などの予期せぬ問題が発生します。
ここでは、簡易なJavaScriptとFeed機能を利用した関連記事を紹介します。
特徴
- LinkWithin, Milliard, GoogleAdSense
- 関連度が高い
- 表示速度が遅い(1秒程度かかる)
- ブラウザの広告ブロック系の拡張機能にブロックされる
- ユーザの行動追跡系の広告であるため、ブロックされる
- A Simple Related Posts Widget For Blogger - Helplogger
- 関連度が低い
- 同一ラベルの記事をランダムに選んでいるだけ
- アクセスするたびに表示される記事が異なる
- 動作が早い(数100ms程度)
- 関連度が低い
- k08045kk/FeedRelatedPosts.js
- 関連度がそこそこ高い
- 記事毎のタイトルと概要の類似度で関連度を判定する
- アクセス毎の結果は固定される
- 動作が早い(数100ms程度)
- 関連度がそこそこ高い
「FeedRelatedPosts.js」は、「A Simple Related Posts Widget For Blogger」の問題点を改善した機能を提供します。Feedを取得して関連記事を作成するという概念は共通しつつ、関連度が低かった問題を文字列類似度により改善しています。
設置方法
- サイト設定用JSONを関連記事の配置場所に記述する
<div id='related-posts' role='navigation'>
<h2>関連記事</h2>
<div>
<script type='application/json' id='related-posts-site-json'>
{
"debug": false,
"homepageUrl": "<data:blog.homepageUrl/>",
"params": "orderby=updated",
"url": "<data:post.url/>",
"title": "<data:post.title.jsonEscaped/>",
"snippet": "<data:post.snippets.short.jsonEscaped/>",
"useSnippet": true,
"useLastPosts": true,
"min": -1,
"max": 5,
"prefix": "<ul>",
"sufix": "</ul>",
"dummy": "<li>&nbsp;</li>",
"format": "<li><a href='${url}'>${title}</a></li>",
"labels": [<b:loop values='data:post.labels' var='label' index='i'><b:if cond='data:i != 0'>,</b:if>"<data:label.name.jsonEscaped/>"</b:loop>]
}
</script>
</div>
</div>
※Blogウィジェットの<b:include data='post' name='post'/>
直後辺りに設置する
※ラベルを取得するためには、Blogウィジェット内に配置する必要がある
FeedRelatedPosts.js
を読み込む(実行する)- k08045kk/FeedRelatedPosts.js
- サイト設定用JSONより後であればどこでも良い
- 直接配置しても良いし、defer/asyncで読み込んでも良い
- わからなければ、
</body>
直前にFeedRelatedPosts.js
を配置しておけば間違いはないです
応用
FeedRelatedPosts.js
は、次のような使用方法も想定されています。
- お好みで各種プロパティを設定する
- GitHubのPropertiesにプロパティ一覧があります
- ページ設定用JSONでサイト設定を上書きして使用する
pages
を設定することでページの関連記事を事前指定できます- ページ毎に関連記事件数を制御することもできます
- 遅延読み込みすることで、ページ表示時のスクリプト実行を抑制できます
- WordPressに設置する
- Feed処理部分を編集することでWordPressに対応できるはずです
- WordPress以外でもFeed機能があれば対応できるはずです
補足
使用して改善点・不満点等あれば、GitHubのIssuesに投稿いただければ改善できるかもしれません。