ランダムで過去記事に飛べる、おみくじみたいな機能があったらいいなぁ(๑╹ω╹๑ )

...ということで作りました。

Bloggerのランダムで過去記事に飛べるボタン


手順

レイアウト > 好きな場所で「ガジェットを追加」する。

Bloggerのレイアウト

[HTML / JavaScript] を選択して、以下のコードを貼り付けて保存。


コードの解説


L.21以降で、scriptを生成して、その中でcallback関数を呼んでいます。

/feedsから始まるリンクで、json形式でBlogger内の投稿データを呼び出すことができます。


totalArticlesで、記事件数を設定します。

※本当は、自動で取得するようにしたかったのですが、色々あって無理だったので(後述)、記事数が増えたら都度手動で変更してください。

luckyNumで、何番目の記事を取るかの数をランダムで決めています。

callback関数内で、取得したjsonからentry(記事)を抽出して、そのリンクを取得しています。

そして取得したリンクを、ボタンにセットします。


苦労したところ

最初の実装アイデア

最初、"/feeds/posts/default?alt=json-in-script&start-index=1&max-results=2000&callback=randomposts"; という形で、

ブログ記事を全件取得し、randomposts関数内でそのうち頭からN番目のデータを取る、という形で実装しようと考えていました。

(max-resultで最大2000件取ろうとしてます。ちなみにコメントアウトしたL9, L10はこの名残ですね)


問題点

しかしこのやり方には大きな問題がありました。

勘のいい皆様ならお気づきかもしれません。

ブログの件数が多すぎて、一部しか取得できなかったのです。

そりゃそうだ。


max-resultをいくつに設定しようが、150件/回までしか取得できなかったんですね。

ということで、start-index(何記事目から数え始めるか)にランダムな数字を割り当てて、出てきた1件を取得する形に変えました。


残念ながら、callback関数内でしか正確な全記事数は動的に取れません。

ので、そこは諦めて、大体の記事数をtotalArticlesに割り当てて、なんとかすることにしたのでした。

記事が増えたら、適宜追加を忘れないように。



まとめ

色々な記事が出てくるので、おみくじや占いみたいに遊ぶこともできます。

ぜひいっぱい使ってください!

ボタンは、PCでは画面右側、スマホでは記事下に設置しています。



参考

Add Random Posts Widget In Blogger