2019年5月18日土曜日

カレンダーを設置する

Bloggerには公式なカレンダーガジェットが有りませんでした。
日本的なのかもしれませんがカレンダーが欲しい。 そこでググって見つかった2つのカレンダーを試してみました。

1.JavaScript型
これ良いです。祭日の考慮もされています。
HTMLとJavaScriptの知識があれば、HTML/JavaScriptのガジェットとして、お気軽に設置できます。
https://github.com/p--q/Calendar5_Blogger/blob/develop/Calendar5_Blogger/WebContent/Calendar5_Blogger.js
https://p--q.blogspot.com/2017/03/blogger12calendar5blogger.html

フィードを拾って投稿リンクを拾っていますので下記の連動がされています。
 ・カレンダーの下に、選択した投稿日の投稿リンクが表示される。
 ・アーカイブ一覧から投稿文書を開くと、それにも連動している。

設置を試すために、下記の4箇所を変更してお試し中です。
 ・トップドメインに関係なく日本語化(日本語以外は書かないので)
 ・前月/翌月へのリンクを左右逆に変更(好みの問題です)
 ・投稿リストのタイトル内のHTMLタグを有効化(createTxt→insertAdjacentHTML)
 ・月が変わった時のファイル名重複による不具合回避(下記の通り)
----------------------------------------------------------------------------------
ファイル名だけの比較をフルパスでの比較に変更してみました
a. 225行目 フルパスのままで問題になるスラッシュをエスケープ
_reF: /\w+\.html/,  // htmlファイル名を抽出する正規表現パターン。
    ↓
_reF: function(s) {   // htmlフルパスファイル名を抽出。
return s.replace(/\//g, '\\/');
},
b. 281行目 _reFの変更に合わせて変更
pt._html = pt._reF.exec(thisUrl);  // URLからhtmlファイル名を取得。
    ↓
pt._html = pt._reF(thisUrl);  // URLからhtmlフルパスファイル名を取得。
c. 292行目 _reFの変更に合わせて変更
if (pt._html[0] == pt._reF.exec(posts[j])[0]) {  // 投稿のhtmlファイル名が一致するとき。フィードは.comで返ってきてTDLが異なるのでURL直接は比較できない。
    ↓
if (pt._html == pt._reF(posts[j][0])) {  投稿のhtmlフルパスファイル名が一致するとき。フィードは.comで返ってきてTDLが異なるのでURL直接は比較できない。
----------------------------------------------------------------------------------

※追記
投稿年月を後から変更した投稿文書が有る時に正しく動作しませんでした。
・問題となる操作:投稿年月を変更した投稿を開いた時
・現象:カレンダー表示が投稿変更前の年月になる
・原因:投稿年月日と変更しても、投稿文書のURLパスが変更されない為
対処を自力でなんとかしようと思いついたのはall()で何とかする事でした。
例えばカレンダ表示年月が変わった時に、その年月をcookieで保持して、all()の中でそのcookieから年月を得る。
まだ、これで上手くゆくかは試していませんが、取り急ぎ、ご報告いたします。


2.CGI型
まず、ユーザー登録してblogIDを通知することで、カレンダーHTMLを返してくれるCGI型です。
http://www.tim.jp/BloggerCalendar/howtouse.html
設置は簡単です。備わっている機能に満足できればお薦めです。
気になったのは、設置を試した時点でSSL対応がなかったことですが、お問い合わせから質問したら、速攻で改善されました。

さて、どちらにするかは、カスタマイズしたければ1.を、簡易なものでメンテナンスフリーなら2.だと思います。
私は1.の方を、自分なりの仕様にカスタマイズしながら使わせてもう事にします。

0 件のコメント:

コメントを投稿