2014年4月13日日曜日

Bloggerで全記事一覧を作る

このエントリーを含むはてなブックマーク


全記事一覧があると、俯瞰的にブログ記事が探せて便利です。
今回、固定ページに全投稿一覧を作ったので、覚え書きとしてメモしときます。

https://www.blogger.com/feeds/自分のblogger ID/posts/default?max-results=9999

でブログのfeedが見えることを確認(アドレスバーにコピペしてみると確認できる。Chromeだと見える。Safariは不可)



自分のbloggerIDはブログ管理画面でのアドレス欄にある
https://draft.blogger.com/blogger.g?blogID=xxxxxxxxxxxxxxxxxx
という数字。

全記事一覧の投稿画面でhtml入力状態にして、投稿フォームに下に貼ったJavascriptプログラムを貼る。
(どこかのサーバーに置いてそれにアクセスする方法でもいいが、誰でもできるという意味ではこれがいいんじゃないでしょうか)

↓結果
全記事一覧

もともとは

<script style="text/javascript" src="http://abu-farhan.com/script/daftarisibloggerarchive/tocbyarchivemin.js"></script>

というふうに
http://abu-farhan.com/script/daftarisibloggerarchive/tocbyarchivemin.js
を読み込めば良いのだが、

とでるので使えない(誰もブログを見てくれなくなるよね)。
で、そのファイルをダウンロードしてきて、ちょっと改変した。

改変箇所は、上記のプログラムだと”下書き”まで全記事一覧として表示されてしまう。
それでは困るので、下書きはスキップできるようにする必要がある。

 <script src="http://www.blogger.com/feeds/自分のblogID/posts/summary?max-results=9999&amp;alt=json-in-script&amp;callback=loadtoc"></script>

↑のスクリプトによってGoogle feed API からはJSON形式でデータを受け取るのだが、各entryごとにタイトル情報などがあり、その中にapp$controlオブジェクトがある(htmlでいうと<app:control>というタグがあるという意味。)。これがあるものは”下書き"なので、このタグがあるエントリーはスルーすることにしました。

ただし、app$controlというプロパティはGoogle feed APIの説明などでも明示されていない。
というわけでオブジェクトのプロパティを全部探索してみたらapp$controlを見つけた。
でこのプロパティがあるentryは"下書き"であり、無いものは”公開されている”entryである。このプロパティがあるエントリーはスルーすることにしました

var m = a.feed.entry[h];
var m1 = m.app$control
                if(m1){
                continue
                }

これによって下書きのタイトルは表示されなくなりました。






参考サイト
http://www.danpros.com/2013/08/blogger-json-feed-api.html
  • このエントリーをはてなブックマークに追加
  • follow us in feedly


Related Posts Plugin for WordPress, Blogger...