ランダムで過去記事に飛べる、おみくじみたいな機能があったらいいなぁ(๑╹ω╹๑ )
...ということで作りました。
手順
レイアウト > 好きな場所で「ガジェットを追加」する。
[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
0 コメント