カレンダーをどのページでも表示するために
以前の「
iBlog
の出力の各種間違いを補正するために」で紹介したカスタマイズ
CommonLib.js の WriteCalendar
を使用するにあたって、blog
のトップページ以外でカレンダーを表示させないという制限があったが、これを解消した。
カスタマイズした
CommonLib.js
を新たにダウンロードして今までのものと置き換えればよい。でも、blog
が置かれるディレクトリによっては
WriteCalendar
に引数を与える必要があるので、一応最後まで目を通してほしい。
WriteCalendar
関数の中で、そのページの
URL から BlogPage, ArchivePage, YearPage, DayPage, CategoryPage,
EntryPage
のどれから呼び出されたかを識別して、適切なカレンダーが出力されるようになっている。
ただし若干の制約がある。それはその
blog
トップページより上のパスが
ArchivePage, YearPage, DayPage, CategoryPage, EntryPage
が置かれているパスとよく似たパターンになっているときは
WriteCalendar
に引数を与えてあげなければならないという制約だ。正規表現を知っている人ならばソースを見てもらえればわかるが、次のようにしてどのページかを判断している。
- '/C{数字が一つ以上}/E{数字が一つ以上}/{何かファイル名}' で終わる URL
- EntryPage と看做す
- '/{C数字が一つ以上}/{何かファイル名}' で終わる URL
- CategoryPage と看做す
- '/20{数字が二つ}/{1から12までの数}/{1から31までの数}/{何かファイル名}' で終わる URL
- DayPage と看做す
- '/20{数字が二つ}/{何かファイル名}' で終わる URL
- YearPage と看做す
- '/archive.html' で終わる URL
- ArchivePage と看做す
- その他
- BlogPage と看做す
このため例えば、http://your.server.com/C12/
が blog
置き場だとすると、本当は
BlogPage なのに CategoryPage
だと思われてしまう。これを防止するために今まで
WriteCalendar();
と書いていたところを
WriteCalendar('http://your.server.com/C12');
と書かなければいけない。C12
の後ろに /
を付けないことに注意。そういうケースでなければ今まで通りでよい。
iBlog
の出力では archive.html
以外は全て index.html が XHTML
ファイルのファイル名になっている。だから上の
{何かファイル名}
の部分は index.html
でもよいのだが、例えば「
html ファイルを shtml
に変更するプラグイン」のようにファイル名を変えるような操作がしてあった場合に当て嵌まらなくなってしまうから
index.html
と名指しはしていない。archive.html
は例外的に名指しにしているが、ArchivePage
は BlogPage
と同じディレクトリに置かれるので、BlogPage
としてのカレンダーでも差し支えないはずだ。
というわけで、これで
XHTMLファイル群とその
CSS、非公開 blog の Login.html、RSS Feed
に対する Validate
が終わった。今までのエントリで強調してこなかったが、
文法的間違いを直したテンプレートセットと日本語化した
Login.html
は、それぞれ日本語化したテンプレートセットと文法的間違いを直した
Login.html になっている。RSS Feed
も
RSS
Validator が OK
を出すようにしただけでなく日本語がきちんと
UTF-8
になるようにした。つまり
Validate
と日本語化の両方が終了した。
Posted: 04:21
|
Comment
|
Trackback
以下、類似エントリです。