ちょっと途切れ(間が空き)ましたが 今月は 『日付表記』 のカスタマイズについて御送りしております。
ブログやBBSなどのCMSでは 「投稿・更新」等の日付データはつき物ですが、独自変数のバリエーションは限られているのが通常でしょう。 「日めくりカレンダ風」等”デザイン”面での装飾はテンプレートレベルから各所目にしますが、文字列自体の変更は例のスレ以外寡聞にして知りません。
いや、 実は(告白しますと) FC2ブログがまだ存在しなかった時代、へたれ日記書きだった私が、無謀にもjavascript等のカスタマイズテーマでブログを書くようになった頃の初期のネタがそれだったのであります。
(その頃は document.write() を用い noscript タグと併用する「埋め込み型」でしたが ”一桁日(月)のゼロ外し”も当時からのテーマでした)
・・・で、今回はいよいよ(?) スクリプトを用いる方法について考えてみようかという次第です。
【 設定法 】 HTMLのhead領域に以下のスクリプトを書きます。 (月名・曜日をフル英語化する場合の例)
<script type="text/javascript"><!--
function chgDateStr(){
var Dat={
"01月":"January", // 月名の設定
"02月":"February",
"03月":"March",
"04月":"Aplyl",
"05月":"May",
"06月":"June",
"07月":"July",
"08月":"August",
"09月":"September",
"10月":"October",
"11月":"November",
"12月":"December",
"日曜":"Sunday", // 曜日の設定
"月曜":"Monday",
"火曜":"Tuesday",
"水曜":"Wednesday",
"木曜":"Thursday",
"金曜":"Friday",
"土曜":"Saturday",
"01日":"1", // 日にちの設定
"02日":"2",
"03日":"3",
"04日":"4",
"05日":"5",
"06日":"6",
"07日":"7",
"08日":"8",
"09日":"9",
"日":""
}
var A=document.getElementsByTagName('*');
for(i=0;i<A.length;i++){ if(A[i].className=="day"){ for(j in Dat){
A[i].innerHTML=A[i].innerHTML.replace(j,Dat[j]);
} } } }
//--></script>
実装時は連想配列定義部の改行は不要です
記事等の日付け部分を以下のように書きます ( 上記設定対応例 )
<span class="day"><%xxx_month>月<%xxx_day>日 <%xxx_wayoubi>曜</span>
日付表記を含むブロック以降、もしくはHTML末尾( </body> タグ手前 ) に以下のスクリプトを書きます
<script type="text/javascript">chgDateStr()</script>
【 解 説 】 定められたクラス名を持つブロックに出力された内容を (日付変数を含む)要素ごとに意図する表記に置き換えようというもの。 HTMLソース上の日付部分には単独でもそれとして読める文字列のみを記述すればOK。 <noscript> タグも必要ありません。
元文字列も置換文字列もお好きに設定できる自由度の高さが売りですが如何でしょう。
但し、置き換えの設定には注意しなければならないポイントもあります。
例えば(当店もそうですが)元ソースが ” yyyy/mm/dd ” のような形ですと年・月・日 其々の置換が難しい。
( 2008/08/08 ) 順序を工夫すれば置換可能ですが*
お示しした例では日本式の 月・日・七曜表記を英語に置き換えていますが、 この場合 「日曜」 の”日” と 「xx日」 の”日” の区別もしなければなりません (置換方法・順序はソースを参照されて下さい)。 ・・・多少のコツ というかセンスが必要かも ?
| . |