土曜日, 11月 04, 2006

indexページの"Newer Posts"と"Older Posts"を自前で処理する実験

indexページで"Newer Posts"と"Older Posts"をクリックした時の処理を自前の処理に差し替えてみた
自前といってもwidgetsの関数を使わせてもらってるけど…
これでページが更新されたタイミングがわかるため
部分更新でもカレンターの更新ができるようになった
目次の方はまだスクリプトに組み込んでない。

<script charset='Shift-JIS' src='http://tirasi.no.ura.googlepages.com/bloginit.js' type='text/javascript'/>

Revert widget templates to default を押してみた

EditHTMLにあるRevert widget templates to defaultを押してみた
テンプレートのwidget内を書き換えた所は元に戻ったけど
headとかはそのままだった。


昨日"Newer Posts"と"Older Posts"が日本語表示されてたような…
気のせいか…。

widgetsの関数を使って書き換えてみる実験

ページの部分更新をwidgets.jsにある関数を使って書き換えてみる実験です。
なんとなくw_ca()という関数を使うのがよさげ

w_ca(a,b,c)
a = POSTするアドレス
b = POSTするパラメータの配列
c = コールバック関数

だいたい関数の引数はこれであってるかと思います。

こんな関数を作ってみました

function setblogposts(url)
{
var a = "http://" + document.domain;
var b = ["action","nextposts","widgetId","Blog1","widgetType","Blog","responseType","js","path",url];
var c = function(e){return true};
w_ca(a,b,c);
}

引数のurlに表示したいurlをいれます

urlは
http://****.blogspot.com/search?updated-min=***&updated-max=***&max-results=*
というのが有効で他のは使えないのかもしれません
updated-minとupdated-maxは表示する記事の日付の範囲を指定します
これは片方だけでもOKです
日付は
2006-11-04T11:11:00+09:00
こんな感じでURLエンコードするといいでしょう
日付の範囲からURLを生成する関数を作ると便利かもしれません
最後の所のmax-results=*の*の部分なんですが
これを例えば5に設定すると記事が5件表示されます
Older Postsとかのリンクもこのmax-resultsの値に書き換わってしまうので注意が必要です。

cのコールバック関数のeにはXMLHttpRequestが返ってくるので
e.responseTextを使うと書き換え用のJavascriptが取り出せます
コールバックの戻り値がtrueの場合は自動的に表示が更新され
falseの場合は表示は更新されません
なので

function(e){
try{
eval(e.responseText);
}catch(e){
}
--この辺に書き換え後の処理--
return false;
};

こんな風に自前で更新させ事後処理とか追加するのもいいかもしれない。