全記事一覧があると、俯瞰的にブログ記事が探せて便利です。
今回、固定ページに全投稿一覧を作ったので、覚え書きとしてメモしときます。
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&alt=json-in-script&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
