2004年ウェブログ総括
総括なしで突っ走ろうとも思いましたが、一応区切りということで。
今年の5月頃からウェブログを自宅サーバで立ち上げ、最初はちまちまとくだらないダジャレを備忘録的に残していくという予定で始めました。ところがアクセスやリンクが今まで経験したこともない桁になり、自分で言うのもなんですがここまで活発なサイトになるとは思いもよりませんでした。まさに青天の霹靂です。
そうなると人間変わるもので、当初は適当に書いていたエントリーも日を追うごとに密度の濃い内容になってまいりまして、サイトのカスタマイズも始めた頃には考えられないほど充実したものになりました。
ということで、多くのテンプレートユーザの皆様、カスタマイズご利用の皆様、テンプレート&カスタマイズ引用元の皆様、コメント・トラックバックをくださった皆様、そしてアクセスくださった皆様、大変お世話になりました。本当にありがとうございます!自身としては半年余りしかやっていないまだまだかけだしのブロガーですので、今後ともご指導・ご鞭撻の程、どうぞよろしくお願い致します。
2005年もどうぞよろしくお願い致します。そして良いお年をお迎えください。
(書き逃げですのでコメントご返事遅くなります)
ポップアップに
おじゃる丸ストラップ(その2)
このフィギュア、ファミリーマート限定ということでしたが、さらに調査の結果(飲料棚に張ってあるステッカー読んだだけ)、期間は「12月20日?27日(なくなり次第終了)」ということが判明し、その1を投稿した時にはすでに終了していました(陳謝)。以降、投稿にかなり時差がありますのでお許しください。
で、2回目の結果です。果たして「キスケ」は出るのか?↓
忘年会は
ポップアップ画面を用いたコメント投稿(その3:公開テンプレート修正方法)
このシリーズの(多分)最後は、公開テンプレートの修正方法についての説明です。
2004年12月30日、本エントリー投稿に伴いまして公開テンプレートにもポップアップ機能を追加致しました。そのためテンプレート取得日によってカスタマイズ方法が若干異なります。これにつきましては各項目の右側に対応するテンプレートを記しましたので必要な方を適宜参照ください。念のため
- 2004年12月30日以前に取得された方:1、2、3、4.2、5、6
- 2004年12月30日以降に取得された方:1、2、3、4.1
となっています。どちらか分からない場合は4項のテンプレートの内容で判断してみてください。
Movable Type 3.121を新規インストール、公開テンプレートの内容に差し替えた後、下記の手順を実施して動作確認しています。その中で個別エントリーアーカイブよりコメント・プレビューまたはコメント・エラー画面にジャンプした後でTypeKeyサインインした場合、個別エントリーアーカイブにリダイレクトされずにコメント・リストにリダイレクトされるという事象が発生しています。この点につきましては予めご容赦ください。また日本語のTypeKeyニックネームでサイン・インした場合、どの画面からのサイン・インも文字化けしないことを確認しておりますが、文字化けする場合はご連絡ください。
1.ポップアップ用テンプレート設定(必須)
より
- コメント・リスト(ポップアップ用)
- コメント・プレビュー(ポップアップ用)
- コメント・エラー(ポップアップ用)
- コメント・保留(ポップアップ用)
の各テンプレートを、該当するテンプレートの内容に上書きしてください(どちらのエントリーも同じ内容です)。
なお、コメント・プレビュー/コメント・エラー/コメント・保留テンプレートについては現在お使いのテンプレートを上書き致しますので、予め任意のファイル名でバックアップされることをお勧め致します。
2.Context.pm修正・その1(必須)
Ogawa::Memorandaさんの提供のパッチを
- lib/MT/Template/Context.pm
の1170行目辺りに設定します。赤色部分を削除して青色部分を追加してください(念のためバックアップを保存しておきましょう)。
my $allow_comment_html_note = (($blog->allow_comment_html)
? ($args->{html_ok_msg} ||
MT->translate("(You may use HTML tags for style)")) : "");
my $lang = ($cfg->DefaultLanguage eq 'ja') ? "&lang=ja" : '';
my $needs_email = $blog->require_comment_emails ? "&need_email=1" : "";
my $registration_required = ($blog->allow_reg_comments
&& !$blog->allow_unreg_comments);
my $registration_allowed = $blog->allow_reg_comments;
my $unregistered_allowed = $blog->allow_unreg_comments;
my $static_arg = $args->{static} ? "static=1" : "static=0";
my $static_field = ($args->{static} || !defined($args->{static}))
my ($static_arg, $static_field);
if (defined($args->{static})) {
$static_arg = $args->{static} ? "static=1" : "static=0";
$static_field = $args->{static}
? (q{<input type="hidden" name="static" value="1" />})
: (q{<input type="hidden" name="static" value="0" />});
} else {
$static_arg = $ctx->stash('comment_is_static') ? "static=1" : "static=0";
$static_field = $ctx->stash('comment_is_static')
? (q{<input type="hidden" name="static" value="1" />})
: (q{<input type="hidden" name="static" value="0" />});
}
my $typekey_version = $cfg->TypeKeyVersion;
このパッチはコメント・プレビュー/コメント・エラーテンプレートの MTCommentField タグに static属性が指定されていない場合、個別エントリーアーカイブまたは3項のコメントリストに設定した static 属性値を自動的に取得してくれるもので、投稿後の画面遷移がその1の通りになります。
3.Context.pm修正・その2(必須)
MTCommentField タグを利用する場合、展開されるソースに getCookie 関数が含まれます。実はコメント用各テンプレートの「Remember Me」またはHTMLの head タグ内にも同じ関数が存在しており、同一名称の関数が重複する場合は後方に定義されたもの(つまり MTCommentField での getCookie)が有効になります。
これにより、ポップアップ画面で日本語のTypeKeyニックネームが文字化けする場合等は
- lib/MT/Template/Context.pm
の(3.121の場合は)1210行目あたりにある下記のスクリプトについて、青色部分を追加してコメントアウトしてください(if文もろとも削除しても良いでしょう)。
if ($registration_allowed || $unregistered_allowed) {
$javascript = <<JAVASCRIPT;
<script language="javascript">
//function getCookie (name) {
// var prefix = name + \'=\';
// var c = document.cookie;
// var nullstring = \'\';
// var cookieStartIndex = c.indexOf(prefix);
// if (cookieStartIndex == -1)
// return nullstring;
// var cookieEndIndex = c.indexOf(";", cookieStartIndex + prefix.length);
// if (cookieEndIndex == -1)
// cookieEndIndex = c.length;
// return unescape(c.substring(cookieStartIndex + prefix.length, cookieEndIndex));
//}
</script>
JAVASCRIPT
}
テンプレートモジュール「Remember Me」の有無は設定環境によって異なります。修正しても文字化けが解消しない場合は cookie を一旦削除(IEであれば「ツール」→「インターネットオプション」→「Cookieの削除」)してみてください。
4.各アーカイブテンプレート変更(その1:リンク先変更)
ポップアップしたい各アーカイブテンプレート(メインページ/カテゴリー・アーカイブ/日付アーカイブ等)の個別エントリーアーカイブへのリンクを、ポップアップ画面へのリンクに変更します。
4.1 2004年12月30日以降にテンプレートを取得された場合
赤色部分を削除(非ポップアップへのリンクをコメントアウト)して青色部分を追加(ポップアップへのリンクを有効化)してください。よく分からない場合は「ポップアップ用」という行のコメントに括られた部分だけを残して、他(「ポップアップ用」という行も含めて)はごっそり削除してください。
<MTEntryIfAllowComments>
<!-- コメント・非ポップアップ用 -->
| <a href="<$MTEntryPermalink archive_type="Individual"$>#comments">Comments</a> [<$MTEntryCommentCount$>]
<!-- コメント・非ポップアップ用 -->
<!-- コメント・ポップアップ用 -->
| <a href="<$MTCGIPath$><$MTCommentScript$>?entry_id=<$MTEntryID$>" onclick="OpenComments(this.href); return false">Comments</a> [<$MTEntryCommentCount$>]
<-- コメント・ポップアップ用 -->
</MTEntryIfAllowComments>
<MTEntryIfAllowPings>
<!-- トラックバック・非ポップアップ用 -->
| <a href="<$MTEntryPermalink archive_type="Individual"$>#trackbacks">Trackbacks</a> [<$MTEntryTrackbackCount$>]
<!-- トラックバック・非ポップアップ用 -->
<!-- トラックバック・ポップアップ用 -->
| <a href="<$MTCGIPath$><$MTTrackbackScript$>?__mode=view&entry_id=<$MTEntryID$>" onclick="OpenTrackback(this.href); return false">Trackbacks</a> [<$MTEntryTrackbackCount$>]
<-- トラックバック・ポップアップ用 -->
</MTEntryIfAllowPings>
4.2 2004年12月30日以前にテンプレートを取得された場合
赤色部分を青色部分の内容に修正してください。よく分からない場合は青色のリストを丸ごとコピーして赤色のリストと入れ替えてやってください。
<MTEntryIfAllowComments>
| <a href="<$MTEntryPermalink archive_type="Individual"$>#comments">Comments (<$MTEntryCommentCount$>)</a>
</MTEntryIfAllowComments>
<MTEntryIfAllowPings>
| <a href="<$MTEntryPermalink archive_type="Individual"$>#trackbacks">Trackbacks (<$MTEntryTrackbackCount$>)</a>
</MTEntryIfAllowPings>
<MTEntryIfAllowComments>
| <a href="<$MTCGIPath$><$MTCommentScript$>?entry_id=<$MTEntryID$>" onclick="OpenComments(this.href); return false">Comments (<$MTEntryCommentCount$>)</a>
</MTEntryIfAllowComments>
<MTEntryIfAllowPings>
| <a href="<$MTCGIPath$><$MTTrackbackScript$>?__mode=view&entry_id=<$MTEntryID$>" onclick="OpenTrackback(this.href); return false">Trackbacks (<$MTEntryTrackbackCount$>)</a>
</MTEntryIfAllowPings>
各リストの
<MTEntryIfAllowComments>~</MTEntryIfAllowComments>
で括られた部分がコメント、
<MTEntryIfAllowPings>~</MTEntryIfAllowPings>
で括られた部分がトラックバックに該当します。
5.各アーカイブテンプレート変更(その2:JavaScript追加)(2004.12.30以前にテンプレート取得された場合)
ポップアップを利用したいテンプレートの <head> ? </head> の間(</head> の直前がいいです)に下記のスクリプトを追加します。先のリンクがクリックされるとこの JavaScript が起動し、ポップアップ画面を表示します。width(画面の幅) および height(画面の高さ) は任意の値を指定できます。OpenComments はコメントポップアップ用、OpenTrackback はトラックバックポップアップ用です。
<script language="javascript" type="text/javascript">
<!--
// コメント・リスト用
function OpenComments (c) {
window.open(c, 'comments', 'width=480,height=480,scrollbars=yes,status=yes');
}
// トラックバック・リスト用
function OpenTrackback (c) {
window.open(c, 'trackback', 'width=480,height=480,scrollbars=yes,status=yes');
}
//-->
</script>
6.スタイルシート修正(2004.12.30以前にテンプレート取得された場合)
スタイルシートに下記の青色部分を追加または修正してください(現状のスタイルシートはポップアップ用の設定を行っていましたが、見直したところ一部不具合がありましたので、その修正です)。なお現在ご使用のタイプが固定/可変で設定内容が若干異なりますのでご注意ください。また設定内容はデフォルト状態のものですので、デザインにあわせて適宜修正してくださって結構です。
可変3カラム/固定3カラム共通
/* ポップアップウインドウのタイトル部分 */
#banner-commentspop {
z-index: 1;
color:#999999;
background:#ffffe0;
background-position:right top;
background-repeat:repeat-y;
background-repeat:no-repeat;
background-image: url("画像を置くURl/ファイル名.gif");
padding-left:10px;
padding-top:10px;
padding-bottom:10px;
text-align: left;
border: 1px solid #666699;
}
#banner-commentspop h1 {
color: #999999;
font-family: "MSゴシック", Arial, sans-serif;
font-weight: normal;
font-size: 32px;
}
固定3カラムご使用の場合は上記の設定の直前にさらに下記を追加
#box-commentspop {
width: auto;
border-bottom: 1px solid #666699;
border-left: 1px solid #666699;
border-right: 1px solid #666699;
background-color: #FFFFFF;
}
| その1:基本動作 |
| その2:カスタマイズ |
| その3:公開テンプレート修正方法 |
| その4:コメントフォームのカスタマイズ |
| その5:その4の補足 |
2004.12.30 追記
2項のパッチ表示が誤っておりました。本日10:05に修正致しましたので、それ以前に本画面より直接コピーされた方は差し替えくださいますようお願い致します。またコメント・プレビュー/コメント・エラーでサイン・インしても問題ないことを確認しましたので記述を削除しました。
2004.12.31 追記
投稿後に日本語全角の名前が文字化けする問題が解消されていなかったため3項を追加しました。それに伴い以降の項番をシフトしました。
コメント投稿者の情報表示をカスタマイズする
コメント投稿者の情報表示のカスタマイズについてご説明致します。
表示に使用される変数タグは MTCommentAuthorLink / MTCommentPreviewAuthorLink の2種類で、表示方法の詳細設定にタグアトリビュート(属性)を用います。これによりコメントに入力されたコメント投稿者の情報(URL・メールアドレス等)の表示・非表示やを表示方法等をコントロールすることができます。
カスタマイズ方法です。まず MTCommentAuthorLink / MTCommentPreviewAuthorLink は、下記の各テンプレートの赤色部分に存在します(デフォルトテンプレートで示しています)。カスタマイズされる場合はこれらが一律対象となります。
個別エントリーアーカイブ
<MTComments>
<div id="c<$MTCommentID$>">
<$MTCommentBody$>
</div>
<p class="posted">投稿者 <$MTCommentAuthorLink default_name="Anonymous" spam_protect="1"$> <MTCommentAuthorIdentity> : <$MTCommentDate$></p>
</MTComments>
コメント・プレビュー
<$MTCommentPreviewBody$>
<p class="posted">投稿者 <$MTCommentPreviewAuthorLink spam_protect="1"$> : <$MTCommentPreviewDate$></p>
:
<MTComments>
<$MTCommentBody$>
<p class="posted">投稿者 <$MTCommentAuthorLink default_name="Anonymous" spam_protect="1"$> : <$MTCommentDate$></p>
</MTComments>
コメント・リスト(本テンプレートを使用している場合)
<MTComments>
<$MTCommentBody$>
<p class="posted">投稿者 <$MTCommentAuthorLink default_name="Anonymous" spam_protect="1"$> : <$MTCommentDate$></p>
</MTComments>
次にタグアトリビュート一覧を示します。
名前の入力がない場合のデフォルト名を設定する
default_name="Anonymous"
これは管理メニュー左の「ウェブログの設定」をクリック→次ページ右上の「設定」をクリック→次ページ下の方にある「コメント」の「名前とURLを必須にする」にチェックがついていない場合に有効になります。デフォルトテンプレートではこの属性が付与されていますが、先のチェックがついていれば気にする必要はありません。この属性の設定がなく「名前とURLを必須にする」チェックがついていない状態で名前なしのコメントが投稿されると、コメント欄に投稿者名が表示されません。
なお設定した場合(および無効にした場合)は以前の名無しコメント全てに適用されます。
メールアドレスにリンクしない
show_email="0"
コメントのメールアドレス欄にメールアドレスが入力されてもリンクしません。デフォルトテンプレートではリンクする状態になっています。
URLにリンクしない
show_url="0"
コメントのURL欄にURLが入力されてもリンクしません。デフォルトテンプレートではリンクする状態になっています。
URLをリダイレクトしない
no_redirect="1"
コメントスパムの目的は、リンクがクリックされることにより検索エンジンのランクを向上させることです。この部分でURLをリダイレクトする意味は、コメント投稿者のURLを検索エンジンから直接見えないようにするためです。そうすることでコメント・スパムの検索エンジンでのランク向上を抑制する効果があります。
デフォルト状態ではこのリダイレクト機能を有効にしていますが、リダイレクトを使いたくない場合は上記の設定を追加してください。
メールアドレスをスパム・ボット対策されたアドレスに変更する
spam_protect="1"
スパマーはHTMLソースに記述されるメールアドレスのフォーマットを見つけてスパムメールを送ります。
spam_protect アトリビュートを設定すればメールアドレスのリンクは表示されますが、スパム・ボット対策されたアドレスに変更されます。つまりブラウザ上では正しいメールアドレスとして表示され、実際のHTMLソースには「@」や「.」を含みません。例えばメールアドレスが
- foo@bar.com
であれば、HTMLでは
- foo@bar.com
となります。
デフォルトテンプレートではこの設定になっていますが、先の show_email="0" を指定した場合はメールアドレスにリンクしなくなるため冗長な設定となります。ただし設定が残っていても問題はありません。
下記に設定例を示します。最もポピュラーと思われるケースで「メールアドレスをリンクしない&メールアドレスをスパム・ボット対策されたアドレスに変更する」の設定は、
<$MTCommentAuthorLink show_email="0" spam_protect="1"$>
または
<$MTCommentPreviewAuthorLink show_email="0" spam_protect="1"$>
となります。
属性を記述する場合はその前後に半角空白を挿入します(変数タグの終了を示す"$"との間はなくても大丈夫です)。属性の記述順序に制約はありません。
おじゃる丸ストラップ(その1)
ゆるいネタです。
コンビにでよく買って飲んでいる「爽健美茶」の500mlボトルに「おじゃる丸フィギュアマスコットストラップ」がおまけでついていました。ついてないコンビニもあったのでファミリーマート限定かも知れません。この番組に登場する「キスケ」というキャラクターが好きな友人がいるので、もし出たら5000円くらいで売ろうと思います(冗)。
で、とりあえず1回目の結果↓
ユーザー・マニュアルのテンプレート
利用方法は、本テンプレートを貼り付けたいテンプレートのサイドメニュー部分の任意の位置にコピー&ペーストしてください。メニュータイトルもセットになっています。公開テンプレートのスタイルシートをお使いの方は(多分)そのまま使えます。それ以外の方や変更されている方はクラス名等を適宜修正してください。また <$MTBlogURL$> の部分は docs の配置先によって適宜変更してください。
またサイドメニューの折りたたみおよび、サブカテゴリーの折りたたみもデフォルトで設定していますので、折りたたみを利用されている方は(これも多分)折りたたみ状態になります。折りたたみ用の id 属性名は「manual」にしています。折りたたみを利用されていない方も既に使用中の id 属性名と重複していないか確認してください。
ユーザー・マニュアル
各サブメニューはトップページと同じインデントにしています。トップページのサブカテゴリーに変更したい場合は赤色部分のコメントマークを全て削除してください。
:
<li><!--<div class="subcategories" id="subcategories100name">--><a href="<$MTBlogURL$>docs/mtmanual.html" target="_blank">トップ</a> <!--</div>-->
<!--<div id="subcategories100list">-->
<!--<ul>-->
<li><a href="<$MTBlogURL$>docs/mtmanual_about.html" target="_blank">Movable Type について</a></li>
:
<li><a href="<$MTBlogURL$>docs/mtmanual_configuration.html" target="_blank">mt.cfg 設定ガイド</a></li>
<!--</ul>-->
<!--</div>-->
:
2004.12.28 追記タグ内の id 属性が公開テンプレートにないものを指定していましたので修正しました。すいません。またパスの設定について補足を追記しました。
DVD-RAMの値段
![]() 先日、秋葉原(東京の電気街)に足を運びました。目的のひとつはDVD-RAMの購入です。 今日、かなり久しぶりに買いに行くとさらに値段が下がってまして、TDKの10枚パック(写真)がなんと2560円。思わず2パック買いました(笑)。1枚あたり256円。ようやくこのメディアもリーズナブルな部類に踏み込んできたのではないでしょうか。DVD-Rはもっと安いですしね。 それとは別に太陽誘電もいつの間にかDVD-RAMを発売していましたね。サイトを見ると12月14日に発売になったようです。既にご存知と思いますがこの会社、世界で最初にCD-Rを開発し、国内で一貫生産をしています。そういうのがなんとなく気に入ってまして、時々「That's」ブランドのCD-Rを利用しています。 |
BlogPeopleリニューアル
「午後3時頃までメンテナンス中」ということでアクセスできなかったのですが、先程見たら突然リニューアルされていて驚きました。 スクロールバーが立ち並んでいたスタイル(これはこれで見慣れてましたが)からすっきりしたデザインに変わって、ポータルサイトっぽくなりましたね。コンテンツも「Blog総合アクセス数ランキング」「Blogジャンル別アクセス数ランキング」等のページが増えてかなり充実した感じです。 |
北習志野は
ポップアップ画面を用いたコメント投稿(その2:カスタマイズ)
今回はコメント・トラックバックのポップアップ化のカスタマイズ方法をご説明致します。
ここではデフォルトテンプレートにもとづいたカスタマイズ方法について記しています。当サイトの公開テンプレート用のポップアップ対応版につきましては本シリーズ次回のエントリーでお知らせする予定です。お待たせして申し訳ございませんがもう少々お待ちください。
以下カスタマイズ方法です。なおポップアップはコメントおよびトラックバックについて有無を選択できます。いずれか片方のみをポップアップにする場合は必要な箇所を適宜お読みになってください。
1.各アーカイブテンプレート変更(その1:リンク先変更)
ポップアップしたい各アーカイブテンプレート(メインページ/カテゴリー・アーカイブ/日付アーカイブ等)の個別エントリーアーカイブへのリンクを、ポップアップ画面へのリンクに変更します。
<MTEntryIfAllowComments>
| <a href="<$MTEntryPermalink archive_type="Individual"$>#comments">Comments (<$MTEntryCommentCount$>)</a>
</MTEntryIfAllowComments>
<MTEntryIfAllowPings>
| <a href="<$MTEntryPermalink archive_type="Individual"$>#trackbacks">Trackbacks (<$MTEntryTrackbackCount$>)</a>
</MTEntryIfAllowPings>
<MTEntryIfAllowComments>
| <a href="<$MTCGIPath$><$MTCommentScript$>?entry_id=<$MTEntryID$>" onclick="OpenComments(this.href); return false">Comments (<$MTEntryCommentCount$>)</a>
</MTEntryIfAllowComments>
<MTEntryIfAllowPings>
| <a href="<$MTCGIPath$><$MTTrackbackScript$>?__mode=view&entry_id=<$MTEntryID$>" onclick="OpenTrackback(this.href); return false">Trackbacks (<$MTEntryTrackbackCount$>)</a>
</MTEntryIfAllowPings>
各リストの
<MTEntryIfAllowComments>~</MTEntryIfAllowComments>
で括られた部分がコメント、
<MTEntryIfAllowPings>~</MTEntryIfAllowPings>
で括られた部分がトラックバックに該当します。
2.各アーカイブテンプレート変更(その2:JavaScript追加)
ポップアップを利用したいテンプレートの <head> ? </head> の間(</head> の直前がいいです)に下記のスクリプトを追加します。先のリンクがクリックされるとこの JavaScript が起動し、ポップアップ画面を表示します。width(画面の幅) および height(画面の高さ) は任意の値を指定できます。OpenComments はコメントポップアップ用、OpenTrackback はトラックバックポップアップ用です。
<script language="javascript" type="text/javascript">
<!--
// コメント・リスト用
function OpenComments (c) {
window.open(c, 'comments', 'width=480,height=480,scrollbars=yes,status=yes');
}
// トラックバック・リスト用
function OpenTrackback (c) {
window.open(c, 'trackback', 'width=480,height=480,scrollbars=yes,status=yes');
}
//-->
</script>
3.コメント・リストテンプレート修正
コメント・リストがポップアップ画面であることを示す MTCommentFields フィールドタグの static 属性に "0" を追加します。コメント投稿後の画面をコメント・リストに誘導する場合はこの指定を行ってください。
<MTCommentFields static="0">
4.Context.pm修正(その1:static属性値取得用パッチ)
Ogawa::Memorandaさんの提供のパッチを
- lib/MT/Template/Context.pm
の1170行目辺りに設定します。赤色部分を削除して青色部分を追加してください(念のためバックアップを保存しておきましょう)。
my $allow_comment_html_note = (($blog->allow_comment_html)
? ($args->{html_ok_msg} ||
MT->translate("(You may use HTML tags for style)")) : "");
my $lang = ($cfg->DefaultLanguage eq 'ja') ? "&lang=ja" : '';
my $needs_email = $blog->require_comment_emails ? "&need_email=1" : "";
my $registration_required = ($blog->allow_reg_comments
&& !$blog->allow_unreg_comments);
my $registration_allowed = $blog->allow_reg_comments;
my $unregistered_allowed = $blog->allow_unreg_comments;
my $static_arg = $args->{static} ? "static=1" : "static=0";
my $static_field = ($args->{static} || !defined($args->{static}))
my ($static_arg, $static_field);
if (defined($args->{static})) {
$static_arg = $args->{static} ? "static=1" : "static=0";
$static_field = $args->{static}
? (q{<input type="hidden" name="static" value="1" />})
: (q{<input type="hidden" name="static" value="0" />});
} else {
$static_arg = $ctx->stash('comment_is_static') ? "static=1" : "static=0";
$static_field = $ctx->stash('comment_is_static')
? (q{<input type="hidden" name="static" value="1" />})
: (q{<input type="hidden" name="static" value="0" />});
}
my $typekey_version = $cfg->TypeKeyVersion;
このパッチはコメント・プレビュー/コメント・エラーテンプレートの MTCommentField タグに static属性が指定されていない場合、個別エントリーアーカイブまたは3項のコメントリストに設定した static 属性値を自動的に取得してくれるもので、投稿後の画面遷移がその1の通りになります。
5.Context.pm修正(その2:重複関数の修正)
MTCommentField タグを利用する場合、展開されるソースに getCookie 関数が含まれます。実はコメント用各テンプレートの「Remember Me」またはHTMLの head タグ内にも同じ関数が存在しており、同一名称の関数が重複する場合は後方に定義されたもの(つまり MTCommentField での getCookie)が有効になります。
これにより、ポップアップ画面で日本語のTypeKeyニックネームが文字化けする場合等は
- lib/MT/Template/Context.pm
の(3.121の場合は)1210行目あたりにある下記のスクリプトを、前方のスクリプトの内容をコピーして一致させる(多分赤色の1行が問題)か、
if ($registration_allowed || $unregistered_allowed) {
$javascript = <<JAVASCRIPT;
<script language="javascript">
function getCookie (name) {
var prefix = name + \'=\';
var c = document.cookie;
var nullstring = \'\';
var cookieStartIndex = c.indexOf(prefix);
if (cookieStartIndex == -1)
return nullstring;
var cookieEndIndex = c.indexOf(";", cookieStartIndex + prefix.length);
if (cookieEndIndex == -1)
cookieEndIndex = c.length;
return unescape(c.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}
</script>
JAVASCRIPT
}
青色部分を追加してコメントアウトしてください(if文もろとも削除しても良いでしょう)。
if ($registration_allowed || $unregistered_allowed) {
$javascript = <<JAVASCRIPT;
<script language="javascript">
//function getCookie (name) {
// var prefix = name + \'=\';
// var c = document.cookie;
// var nullstring = \'\';
// var cookieStartIndex = c.indexOf(prefix);
// if (cookieStartIndex == -1)
// return nullstring;
// var cookieEndIndex = c.indexOf(";", cookieStartIndex + prefix.length);
// if (cookieEndIndex == -1)
// cookieEndIndex = c.length;
// return unescape(c.substring(cookieStartIndex + prefix.length, cookieEndIndex));
//}
</script>
JAVASCRIPT
}
テンプレートモジュール「Remember Me」の有無は設定環境によって異なります。
以上です。例によって不具合等ございましたらご連絡ください。
2004.12.26 追記
MTCommentFiled を利用する場合、getCookie 関数による不具合が生じる可能性があるため、記述を追加しました。
2004.12.27 追記
Ogawa::Memorandaさんより提供くださったパッチの適用により、4項以降の記述を全面修正致しました。
2004.12.30 追記
4項のパッチ表示が誤っておりました。本日10:00頃に修正致しましたので、それ以前に本画面より直接コピーされた方は差し替えくださいますようお願い致します。
USB カードリーダ購入
![]() 携帯のminiSDに保存したデータをPCに転送したいので、先日購入しました。以前も同じようなものを購入した経緯があり、そちらは色々なカードに対応していていいのですがやや大き過ぎるのが難点で、今回はメモリースティックDUOとminiSD用にしました。かなりコンパクトです。また直接差し込めない場合の延長ケーブルつき。 本当はminiSD専用が欲しかったのですが、最近の(DoCoMoの)携帯は標準でメモリースティックDUO/miniSD対応みたいです。これなら買い換えた時にどちらでも対応できるのでこれにしました。 |
Movable Type 3.14を2005年1月に提供
米国では3.14がリリースされましたが、「2005年1月中に日本語版のバージョン3.14をお届けする計画です。」とのことです。
1月31日の23:59あたりは要注意です。
最近ウェブログのカスタマイズに関する課題が山積みで、手際よく片付けていきたいのですが手際が悪いのでエントリーにしたくてもできない状態が続いています。エントリーの投稿間隔が空いている時は陰でウェブログと格闘中ということでお待ちの皆様、お許しください。
その間ダジャレでお茶を濁そうという魂胆です。ネットでも師走です。
とりあえず年内にポップアップ用テンプレートを公開して年を越したいと考えています。そして3.14がテンプレートに影響のないバージョンであることを祈ってます。
menufolder.js 3.01 リリース
折りたたみスクリプトの menufolder.js をマイナーバージョンアップしました。
今回の修正は MacIE 用の対処です。3.00での MacIE で折りたたみが正常に動作しない問題について修正致しました。MacIE をご使用の方は多くないかも知れませんが、折りたたみ可能なブラウザが拡大されますのでアップグレードされることをお勧めします。
なお今回の修正は TOY COZY MUSEUM:toycozy さんおよび、Mellout,inc.:mellout さんのご助言およびご協力によりリリースすることができました。この場をお借りしてお礼申し上げます。
アップグレードされる場合は下記のリンクでスクリプトのページ(あちこちにリンクを貼るとメンテナンスが大変なので新しく作りました)へジャンプし、そこからダウンロードしてください。
なお 3.00 のスクリプトから修正される場合は下記の変更を行ってください。
まず95行目あたりにある赤色部分の行を青色のものに入れ替えます。
for(var x = 0; x < list.length; x++) {
if (list[x] != name) {
newData.push(list[x]);
}
}
for(var x = 0; x < list.length; x++) {
if (list[x] != name) {
newData[newData.length] = list[x];
}
}
次にスクリプト冒頭に配している各設定データ(赤色部分)
//--------------------------------------------------------
// Configuration
//--------------------------------------------------------
// サイドメニュー用折りたたみマーク
var openMarkForSideBarMenu = '▽';
var closeMarkForSideBarMenu = '△';
:
(中略)
:
// サブカテゴリー用折りたたみマーク
var openMarkForSubCategories = '▽';
var closeMarkForSubCategories = '△';
//--------------------------------------------------------
をごっそり切り取り、下記の位置(切り取り前の行数で言うと172行と173行の間)に移動します。
:
:
function FoldNavigation(idName,initMode,viewNum) {
//--------------------------------------------------------
// Configuration
//--------------------------------------------------------
// サイドメニュー用折りたたみマーク
var openMarkForSideBarMenu = '▽';
var closeMarkForSideBarMenu = '△';
:
(中略)
:
// サブカテゴリー用折りたたみマーク
var openMarkForSubCategories = '▽';
var closeMarkForSubCategories = '△';
//--------------------------------------------------------
var openMark; // The mark for opening, when having closed
var closeMark; // The mark for closing, when open
var preMark; // The insertion position of a mark.
:
:
具体的な修正内容は下記の通りです。
- 現状のスクリプトで用いている push 関数が MacIE では期待する動作とならないため、push 関数による処理を配列の代入処理に変更。
- グローバル変数として設定している各設定値用の変数のスコープが正常に認識できないため、ローカル変数として配置するように変更。
MTCommentPreviewIsStatic の振る舞いについての改善案
コメントのポップアップ化に関する事項で、投稿後の表示画面選択情報を保持する MTCommentPreviewIsStatic の振る舞いについて改善案を記します。
MTCommentFields タグで MTCommentPreviewIsStatic が指定できない
MTCommentFields はコメント・リスト/コメント・プレビュー/コメント・エラーの各テンプレートでコメント入力フォームを指定するコンテナタグです。MTCommentPreviewIsStatic は、ユーザー・マニュアルでは
特別な秘匿タグで、Comment Preview and Comment Error テンプレートで使います。システムは、コメントを投稿後、どのページを表示したらよいか知るために、このタグを利用します。このタグを使うときは Comment Preview と Comment Error テンプレートの中の HTML フォーム の INPUT HIDDEN の中に埋め込みます。
という説明になっています。これは変数タグで、値と意味は次の通りと考えられます。
- 0:ポップアップ・ウィンドウ
- 1:非ポップアップ・ウィンドウ
MTCommentPreviewIsStatic の元となる情報は、個別エントリーアーカイブではコメントフォームに埋め込まれた
<input type="hidden" name="static" value="1">
またはコメント・リストの
<MTCommentFields static="0">
より取得します。
この値の取得方法は Movable Type ユーザー・マニュアルによると、コメント・プレビュー/コメント・エラーテンプレートのコメントフォーム内に
<input type="hidden" name="static" value="<$MTCommentPreviewIsStatic$>">
を指定するようになっています。
input タグを用いるということは、デフォルトテンプレートで使われている MTCommentFields が適用できないということを暗黙的に指しており、コメント用テンプレートに 個別エントリーアーカイブと同じ(膨大な)テンプレートを貼り付ける必要があります。
これは大きな問題ではありませんが面倒です。また直感的およびポップアップ化によるテンプレート変更の容易性から、コメント・プレビュー/コメント・エラーテンプレートで
<MTCommentFields preview="1" static="<$MTCommentPreviewIsStatic$>">
という指定ができても良いのではないでしょうか(実験しましたが×)。
という訳で上記は改善案として記させて頂きました。またこの指定が可能となるパッチが Orgawa::memoranda さんより公開されることを密かに期待しております。
なお MTCommentPreviewIsStatic 値の取得は、MTCommentFields を残した状態で下記のスクリプト(青色部分)を追加することで実現できます。
<MTCommentFields preview="1">
<script type="text/javascript">
<!--
if (document.comments_form.static)
document.comments_form.static.value = '<$MTCommentPreviewIsStatic$>';
//-->
</script>
この方が、個別エントリーアーカイブよりコメント用フォームをコピー&ペーストし、その中の input タグの指定を変更するという作業を行うよりはるかに簡単です。
コメント・プレビュー/コメント・エラー画面でフォーム情報が引き継がれない
真面目に input タグから MTCommentPreviewIsStatic 値を取得した場合の問題です。
現状の仕様により、MTCommentPreviewIsStatic を使用するためにコメント・プレビュー/コメント・エラーテンプレートの
<MTIfCommentsAllowed>
:
</MTIfCommentsAllowed>
を個別エントリーアーカイブのもの(厳密にはcookie取得用のJavaScriptを含む)に入れ替える必要がありますが、そのままではフォーム入力がプレビュー画面に引き継がれないという問題(カスタマイズ不足?)が発生します。
これについては入れ替えた部分の下記の input タグにvalue 属性等(青色部分)を追加することで解決します。
<input tabindex="1" id="author" name="author" value="<$MTCommentPreviewAuthor encode_html="1"$>"/>
:
<input tabindex="2" id="email" name="email" value="<$MTCommentPreviewEmail encode_html="1"$>"/>
:
<input tabindex="3" type="text" name="url" id="url" value="<$MTCommentPreviewURL encode_html="1"$>"/>
:
<textarea tabindex="4" id="text" name="text" rows="10" cols="50"><$MTCommentPreviewBody convert_breaks="0" encode_html="1"$></textarea>
また入れ替えたタグの直後に下記のスクリプト(Ogawa::memoranda:Movable Type 3.0のMTCommentFields tagより引用)を追加する方法もあります。
<script type="text/javascript">
<!--
if (document.comments_form.author)
document.comments_form.author.value =
'<$MTCommentPreviewAuthor encode_js="1"$>';
if (document.comments_form.email)
document.comments_form.email.value =
'<$MTCommentPreviewEmail encode_js="1"$>';
if (document.comments_form.url)
document.comments_form.url.value =
'<$MTCommentPreviewURL encode_js="1"$>';
if (document.comments_form.text)
document.comments_form.text.value =
'<$MTCommentPreviewBody convert_breaks="0" encode_js="1"$>';
//-->
</script>
仮にこれが不具合であったとしてもシステムとして修正されることは考えにくいので、やはりコメント・プレビュー/コメント・エラーテンプレートでは MTCommentFields の利用が前提ではないかと推測しています。
動作および振る舞いについて認識誤り等ございましたらご指摘ください。
2004.12.23 追記
フォーム情報が引き継がれない問題について、(o)さんよりアドバイス頂いた方法(inputタグに挿入)に修正しました。先に書いたのもとりあえず残してます。
またスクリプトの引用がもれていたので追記しました。
さらにcookie取得用のJavaScriptは不要ですので削除しました(ポップアップでこれが必要なのはコメント・リストテンプレートのみ)。
2006.04.04 追記
リストから language 属性を削除しました(HTML4.01/XHTMLで非推奨あるいは廃止されているため)。
Movable Type 3.14英語版リリース
20日、Movable Type 3.14英語版がリリースされました。
Ogawa::memorandaさんの記事によると、ダイナミックパブリッシングを使用しない場合、巷で話題になっていた fileinfo.db を作らないようになったそうです。他コメント機能改善等を含んだマイナーバージョンアップです。
トラックバック送信テスト用エントリー
トラックバック送信テスト用エントリーです。他サイトの方もご利用ください。
なお、トラックバック送信元の条件によっては公開が保留される可能性があります。保留されたトラックバックは時々チェックしています。スパムでなければ公開致しますので気長にお待ちください。
用語集追加
サイドバーメニューの「Introduction」に「用語集」を追加しました。とりあえずこのサイトで用いる用語の中から分かりづらいと思われるものを選んで書いてみましたが、このページはどんどん追加していきたいと考えておりますので、追加希望等がございましたらこちらのエントリーのコメントにご記入頂ければ幸いです。
用語集をカテゴリーとして独立させる手もありますが、それについては別途検討したいと思います。
このページとは別にブログの使い方を記したページを随分前から作っておりまして、そのページとペアで公開する予定でしたがまだ陽の目を見れそうにないので、アクセス頻度の高そうなこちらのページだけ先に公開することにしました。
ポップアップ画面を用いたコメント投稿(その1:基本動作)
ポップアップ画面を利用したコメント投稿の仕組みについてご説明致します(分かる範囲で)。このエントリーを投稿した段階ではテンプレートおよびカスタマイズ方法を公開しておりません。予めご了承ください。
最初に Movable Type ユーザー・マニュアルよりポップアップの定義を引用します。
アーカイブの1ページに2つ以上のエントリーを持つような種類のアーカイブを使う場合、コメントをインラインにするのはあまり意味がありません。 そのような場合のために、Movable Typeでは動的に生成されるコメント用ポップアップ・ウィンドウを利用できます
つまり、デフォルトテンプレートあるいはデフォルトの設定で再構築した状態ではメインページやカテゴリー・アーカイブページ・月別アーカイブページ等からのコメント投稿(あるいは参照)では個別エントリーアーカイブページにジャンプしますが、ページ遷移せずにコメント投稿(あるいは参照)できることがポップアップの目的と考えられます。トラックバックリスト表示も同様です。
次に図を用いてポップアップを利用したメインページからのページ遷移について示します。図および説明はデフォルトテンプレートおよびデフォルト設定を前提にしています。またポップアップを利用する場合でも個別エントリーアーカイブからのコメント投稿は有効という前提です。
通常のコメント投稿は、メインページや各アーカイブページからエントリー下に表示される時間のリンクをクリックすると、個別エントリーアーカイブ(図の左側)にジャンプします。そこでコメントを入力し「確認」をクリックすればコメント・プレビュー画面(図の左下)に遷移します。コメント・プレビュー画面で「投稿」をクリックするとコメントが反映された個別エントリーアーカイブにリダイレクトします。個別エントリーアーカイブで「投稿」をクリックすれば、同じようにコメントが反映された個別エントリーアーカイブにリダイレクトします。
ポップアップを利用したコメント投稿の場合、メインページや各アーカイブページのエントリー下にある"Comments"のリンクをクリックするとポップアップするように予め設定することを前提とします(設定方法は別途)。ポップアップしたコメント・リスト上でコメントを入力し、「確認」をクリックすればコメント・プレビュー画面(ポップアップ:図の右側)に遷移します。その画面で「投稿」をクリックするとコメントが反映されたコメント・リスト(図の右下)にリダイレクトします。コメント・リストで「投稿」をクリックすれば、同じようにコメントが反映されたコメント・リストにリダイレクトします。
![]() |
上記の動作を実現するためには、個別エントリーアーカイブからのリダイレクト先とポップアップ画面からのリダイレクト先をダイナミックに変更させる仕組みが必要になります。なぜなら「コメント・リスト」テンプレートはどちらも同じものが使われているためです。
当初このサイトではポップアップ画面を利用していたのですが、ポップアップ画面からの投稿後のリダイレクト先が図のような遷移にならずメインページになる、つまり狭いポップアップ画面に3カラムのページが表示されてしまうため途中からポップアップしない設定に変更しました。
当時は設定方法に問題があったためそうなっていました。今回はリダイレクト先の設定方法を含めてテンプレートおよびカスタマイズ方法を次回以降にご説明する予定です。
ポップアップ画面利用についてはひとつ制約があります。前述の通りコメント・プレビュー画面は個別エントリーアーカイブおよびコメント・リスト、いずれからの遷移においても同一のテンプレートを使用します。つまりポップアップの利便性を考慮すると、コメント・プレビュー画面は必然的に1カラムになります。ポップアップは画面サイズを任意に指定できますので情報量をコントロールする(例えばマルチカラム化等)ことも可能ですが、使用目的から考えると必要最低限の情報を表示することが好ましいでしょう。
検索画面テンプレート追加
検索画面テンプレートを下記のエントリーに追加しました。
検索画面テンプレートはサイドメニューの Search this site による検索結果を表示する際に用いられます。以前公開したものと機能的な差分はありませんが日本語表示に対応できるように変更しました(それを機能的な差分というのかも知れません)。下記は公開テンプレートに本テンプレートを適用した場合の検索結果表示イメージです。
また検索が実行された場合、管理画面(メインメニュー)右下にある「Movable Type のログの確認」をクリックすると
2004.12.17 15:23:56 192.168.0.111 Search: query for 'hogehoge'
という具合に表示されますので、簡単な検索文字列解析に使えます。
2004.12.21 追記
検索結果の右側に表示される Edit という編集画面へのリンクを削除したい場合は、下記の赤色部分を削除するか、
<div class="blogbody">
<h3 class="title"><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></h3>
<p><$MTEntryExcerpt$> <$MTEntryEditLink$></p>
<p class="posted"><MT_TRANS phrase="Posted in "><$MTBlogName$><MT_TRANS phrase=" on "><$MTEntryDate$></p>
</div>
青色のコメントマークをつけてコメントアウトしてください。
<div class="blogbody">
<h3 class="title"><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></h3>
<p><$MTEntryExcerpt$> <!--<$MTEntryEditLink$>--></p>
<p class="posted"><MT_TRANS phrase="Posted in "><$MTBlogName$><MT_TRANS phrase=" on "><$MTEntryDate$></p>
</div>
車故障
以前も本カテゴリーに登場している1974年式の「フォルクスワーゲン・ビートル」。もうかれこれ10年以上乗っています。で、ご覧の通り積載車で運ばれようとしている写真は、先日道路走行中に突然エンジンが停止してしまった時の模様です。
停止した時の状況は、ガス欠ならエンジンの吹けが悪くなり、それとともにスピードが次第に落ちていくのですが、そういう類のものではなく何かによってガソリンの供給が突然断ち切られたような感触でした。アクセルを踏んでもウンともスンとも言いません。このままではすぐに止まってしまうので反射的にクラッチを踏んで空走状態にしました。
一瞬何が起こったか分かりませんでしたが3秒ほどたってから
- 「あー…」
と事態の重大さに気がつくと同時に言いようのない脱力感を覚えました。
実はこれまでにも何回かこういうことがあったのである意味慣れている筈だったのですが、ここ数年何事もなく無事に動いていたためか久しぶりの故障に驚きました。
惰性でとろとろ走っている車を具合のいいところを見つけて路肩に寄せて停車。幸い車や人の往来がほとんどない閑静な場所でしたので、周囲の非難や同情を浴びずにすみました。以前の故障では信号がある横断歩道の手前、しかも追い越し車線側で止まってしまって、歩行者用信号が青になったタイミングで横断歩道を歩く人と一緒に路肩の方までせっせと押して渡るという、情けない記憶もあります。
停車すると同時にJAFの会員証を出して「#8139(ハイ、サンキュー)」に電話。オペレータさんとしばしやりとり。
- 「お車は何ですか?」
- 「フォルクスワーゲンです(大体これで通じる)」
- 「車種は何でしょうか?」
- 「えと、ビートルですが」
- 「…」
と明らかに車種がお分かりになっていないか、あるいは「まだそんな車に乗っているのか」という無言の圧力のような空気が漂う中、サービスカーの手配をして頂きました。正式には「Type1」という名称なのですがさらに分からない気がするので業界以外の方には用いてません。
30分ほど待つとサービスカー(レッカー)が到着。とりあえず原因究明に。後方にあるエンジンルームをなにやら見ながら整備士さんが
- 「はい、エンジンかけてくださ?い!」 「はい!」
そのやりとりを2、3回繰り返し、イグニッションを回しますがエンジンはいっこうにかかる気配を見せません。
- 「どうもディストリビュータ(点火プラグへ決められた順序に電気を配る回転装置)のポイントが点火していないみたいですね」
と故障部分を見せてもらいながらの説明。ちなみにポイント式の点火装置は最近の車にはありません。
- 「こうやってポイントを磨いたら普通は点火するんですけどね?」
「普通の車じゃないです」みたいな言外の意を伝える整備士さん。結局
- 「レッカーで前を持ち上げて運搬すると後のマフラーが地面にあたるので、積載車を手配しますね」
はい。いつもそういう展開になるので予め車高が低いことはオペレータさんに伝えるようにしているのですが、今日は忘れてました。
その日はまた急に冷え込んできて、エンジンがかからない中(かかっても排気ガスのような温風しか出てこないのでそれはまた問題ですが)、次の車が到着するのをじっと耐え忍んでました。
それから待つこと約1時間半、ちょうど傍らにあった公園のトイレに15分おきに4回ほど往復した後、ようやく積載車が到着。
車の外に降りて作業を見守る中、記念撮影。積載車に車を積む仕組みはご覧の通り、まず大きな荷台がスライドしながら斜めに降りてきます。その後備え付けのワイヤーを車前方にひっかけて斜めの状態で引っ張っていきます(写真上)。引っ張り上げた後は荷台が再び水平になりながら元に戻り、運転中に車がずれないよう固定します(写真下)。
いつも証拠が残らないのですがこうやって記録に残すとリアルですね(…)。極寒の状態から一転して暖かい助手席に乗れたことは一生の想い出になるでしょう。
この車、ディーラー等では扱ってくれないほど改造しているので、いつもお世話になっているカーショップまで運転手のおじさんと世間話をしながら運んで頂きました。
カーショップ到着した時にはすでに夜も深々とふけており、誰もいないため放置状態同然で置いて帰ってきました。次の日の朝、ショップに電話をしたらすでに状況は把握されていたようで、部品交換で治るようです。
ということで今年もJAFの年会費は元がとれました。なぜか人を乗せていない時に運良く故障してくれます。
Movable Type ユーザー・マニュアルをサイドメニューに追加
メニューは、せっかくなのでトップページへのリンクだけでなく、サブメニューの中から頻度の高そうなものをピックアップして加えました。またテンプレート系のマニュアルは見る機会が多いので、さらにサブカテゴリー化("▽"マークで折りたたみ)して直接参照したい項目にジャンプできるようにしています。サブメニュー全体はトップのサブカテゴリーにするのが本来ですが、テキストの折り返しが煩わしいのでトップと同じレベルに配しました。 |
リストはサブカテゴリー表示を流用しています。ただし「id 属性は文書内で一意でなければならない」という制約があるため、サブカテゴリーリストの
<div id="categories">
が使えません。したがってサブカテゴリー表示用のスタイルシート categories の内容に別名の id 属性を付与して使用しています。
くまざさジャンボリー
小粋なUserListご利用の方は既にご存知と思われますが、音楽家・元モダンチョキチョキズのハセベノヴコさんがご覧の通り「NOP DAYS」というブログタイトルで当サイトのテンプレートユーザになってくださってます(かなり嬉)。メインサイトはこちらです。かれこれ数週間前の話なのでややタイミングを逸した感もありますが、スキップ予定の150サイト達成という区切りの意味も込めてお知らせさせて頂きました。 |
で、関連の宣伝です。
というネットラジオが、毎週金曜日深夜に更新(放送?)されています。イソダオサム・ハセベノヴコ夫妻の楽しいトークと、素敵な音楽をたっぷり楽しめます。現在第2回まで更新されてます(これまでの分もバックナンバーとして置かれてます)ので皆様是非一度お越しください。
オープニングのテーマソングを口ずさんでしまう今日この頃です。
サブカテゴリーリストの折りたたみ
サイドメニューのサブカテゴリーリストの折りたたみカスタマイズをご紹介致します。
仕様
- サブカテゴリーが存在する親カテゴリーの右側に折りたたみマークを表示します
- 折りたたみマークは任意の文字を指定できます
- カテゴリーのエントリーの有無には依存しません
- 折りたたみ状態をcookieで保持します
- カテゴリー名が折り返されても(多分)大丈夫です。
また、サイドメニューのツリー化スクリプトとの併用が可能です。以下設定方法です。
なおV3.0にサブカテゴリー折りたたみ機能を盛り込み済ですので、サイドメニューの折りたたみを既にご利用くださっている方につきましては下記の1項および6項をスキップしてください。
1.menufolder.js ダウンロード
下記のリンクをクリックするとスクリプトのページへジャンプします。そこで menufolder.js をクリックし、同じファイル名でご自身のPCに保存してください。
ファイルは UTF-8 で作成していますのでブログと同じ文字コードに合わせてください(よく分からない方はそのままで結構です)。
2.menufolder.js 設定変更
menufolder.js をテキストエディタ等を用いて、下記の青色行の赤色部分を本リストの通り(折りたたみマークは任意)に変更してください。
// カテゴリーリスト数計算方法
// サブカテゴリーのカテゴリー数を適正に計数する
// サブカテゴリーに対応:true
// 従来のカテゴリーに対応:false
var subCategoryCount = true;
:
// サブカテゴリーフラグ
// サブカテゴリーの折りたたみを有効にする(テンプレート要設定)
// 有効にする:true
// 無効にする:false
var subCategory = true;
// サブカテゴリー用折りたたみマーク
var openMarkForSubCategories = '▽';
var closeMarkForSubCategories = '△';
設定内容の詳細は下記の通りです。
subCategoryCount
- 名称:カテゴリーリスト数計算方法
- 用途:カテゴリーリスト数計算方法を li タグ(サブカテゴリー表示)で計数するか、a タグ(従来の一括表示)で計数するかを指定します。
- 設定値: true:li タグで計数/false:a タグで計数
subCategory
- 名称:サブカテゴリーの折りたたみ有効フラグ
- 用途:サブカテゴリーの折りたたみの有効/無効を設定します。ここでは有効にします。
- 設定値: true:有効/false:無効
openMarkForSubCategories/closeMarkForSubCategories
- 名称:サブカテゴリーの折りたたみマーク
- 用途:サブカテゴリー名横に表示する折りたたみ用リンクのマーク
- 設定値:任意の文字(設定したマークを''で括るように)
3.menufolder.js 配置
menufolder.js の修正が終わったら保存し、ローカル・サイト・パスに配置してください。「配置」とはレンタルサーバの場合はFTPツール等によるアップロード、自宅サーバの場合は単なるコピーを示します。
4.カテゴリーリスト表示用タグ修正
折りたたみを利用する各テンプレートの、カテゴリーリストを表示するタグを変更します。上は3.1x用の公開テンプレートからの抜粋ですので、この赤色部分を下のリストの青色部分と入れ替えてください。
<div class="sidetitle">
Categories
</div>
<!-- 全カテゴリー用 -->
<div class="side">
<MTCategories>
<a href="<$MTCategoryArchiveLink$>">
<$MTCategoryLabel$></a> [<$MTCategoryCount$>]<br />
</MTCategories>
</div>
<!-- 全カテゴリー用 -->
<!-- サブカテゴリー用
<div class="side">
<div id="categories">
<MTSubCategories>
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse max_depth="3">
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</div>
</div>
サブカテゴリー用 -->
<div class="sidetitle">
Categories
</div>
<!-- サブカテゴリー用 -->
<div class="side">
<div id="categories">
<MTTopLevelCategories>
<MTSubCatIsFirst><MTHasParentCategory><div id="subcategories<MTParentCategory><$MTCategoryID$></MTParentCategory>list"></MTHasParentCategory><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><MTHasSubCategories><div class="subcategories" id="subcategories<$MTCategoryID$>name"></MTHasSubCategories><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>] <MTHasSubCategories></div></MTHasSubCategories>
<MTElse>
<li><MTHasSubCategories><div class="subcategories" id="subcategories<$MTCategoryID$>name"></MTHasSubCategories><MTCategoryLabel> <MTHasSubCategories></div></MTHasSubCategories>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul><MTHasParentCategory></div></MTHasParentCategory></MTSubCatIsLast>
</MTTopLevelCategories>
</div>
</div>
<!-- サブカテゴリー用 -->
緑色は公開テンプレートからの変更または追加部分を示しています。また
<div class="side">
の部分に折りたたみ用の id 属性を設定されている場合は、現在の設定を反映させてください。
5.JavaScript起動用スクリプト設定
折りたたみを利用する各テンプレートに、menufoleder.js の FoldNavigation を起動するスクリプトを設定します。この設定方法には 起動スクリプトの自動生成と手動設定の2通りがあります。
menufolder.js を起動する単位は親カテゴリーです。つまり、折りたたむ親カテゴリーの増減が発生するとこの起動部分も増減、つまり変更の必要が生じます。自動生成ではMTタグを用いており、折りたたみが必要な親カテゴリーの id 属性を取得し、起動スクリプトを再構築時に自動生成ます。手動設定の場合は親カテゴリー分の起動スクリプトを文字通り手動で挿入します。
普通に考えれば前者しかありえませんが、自動生成では折りたたみの初期状態を「全て開く」または「全て閉じる」のいずれかのみしか選択できない、また子カテゴリーを持つ全ての親カテゴリーに折りたたみマークが付与されるのがデメリットです。手動設定は面倒な反面、初期状態を親カテゴリー別にきめ細かく設定できます。また折りたたむ親カテゴリーを任意に選択することができます。
という訳で自動生成を行う場合は5.1を、手動設定の場合は5.2の作業を行ってください。
5.1 自動生成の場合
折りたたみを利用する各テンプレートに下記のタグを、4項で設定したタグの直下に挿入します。
<script type="text/javascript">
<!--
<MTTopLevelCategories>
<MTHasSubCategories>FoldNavigation('subcategories<$MTCategoryID$>','off',false);</MTHasSubCategories><MTHasSubCategories></MTHasSubCategories>
<MTSubCatsRecurse>
</MTTopLevelCategories>
//-->
</script>
赤色部分は5.2(2)項の initState を参照して適宜変更してください。
5.2 手動設定の場合
(1)MTCategoryID取得
まず折りたたみマークが付与される各親カテゴリーのMTCategoryIDを取得(単なるメモ)します。繰り返しになりますが5.2項を選択された場合は、サブカテゴリーをもつ親カテゴリーが増減する度に修正が必要になります。
管理メニューの「カテゴリー」をクリックしてカテゴリー名をマウスオン(またはクリック)するとステータスバー(あるいはアドレス)に
- http://~/mt.cgi?__mode=view&_type=category&blog_id=1&id=n
が表示されます。このURLの最後の n がMTCategoryIDですので、カテゴリー名とMTCategoryIDの対応を(メモする等で)記録してください。
とりあえず5.1(1)をテンプレートに設定・再構築して、そのソースを取得して5.2(2)に反映させるという手もあります。
(2)JavaScript起動用スクリプト設定
折りたたみを利用する各テンプレートで、menufolder.js を起動するためのスクリプトを4項で設定したタグの直下に挿入します。まずはサンプルをご覧ください。
<script type="text/javascript">
<!--
FoldNavigation('subcategories18','on',false);
FoldNavigation('subcategories22','on',false);
FoldNavigation('subcategories24','on',false);
FoldNavigation('subcategories31','off',false);
//-->
</script>
青色は挿入部分、赤色は適宜修正します。それぞれのフォーマット、意味および設定値は下記の通りです。
FoldNavigation('idName','initState',viewListNumber);
idName
- 名称:id属性名
- 用途:折りたたむメニューのid属性を指定します。
- 設定値:このスクリプトの直前のメニューのid属性名("name"または"list"を除去した形)
initState
- 名称:初期状態
- 用途:ページを最初に表示した時の折りたたみ状態を指定します
- 設定値: on:開いた状態/off:閉じた状態
- 名称:リスト数表示
- 用途:メニュータイトル横にリスト数の表示・非表示を設定します
- 設定値: true:表示/false:非表示(本カスタマイズでは false 固定)
この例ではMTCategoryIDが18、22、24、31を折りたたむ親カテゴリーとして4行記述しています。18、22、24の3つは開いた状態、31は閉じた状態で表示されます。
折りたたむカテゴリー数は各サイトで異なりますので折りたたみが必要なカテゴリー数分を上記の例にならって記述し、5.2(1)で記録したMTCategoryIDは赤色部分に
- subcategories + MTCategoryID
という文字列で設定してください(「複数形になっている」とかいうツッコミはなし)。スクリプトはこの文字列「subcategories」を判別してサブカテゴリーの折りたたみ処理を実行していますのでお間違えのないように気をつけてください。
6.menufolder.js インクルード文挿入
折りたたみを利用する各テンプレートの <head>~</head> の間に下記のタグを追加してください。charset 属性は menufolder.js の文字コードを指定してください。
<script type="text/javascript" src="<$MTBlogURL$>menufolder.js" charset="utf-8"></script>
7.スタイルシート設定
スタイルシート(styles-site.css)に下記の位置(.side #categories li の下)に、折りたたみマーク装飾用のスタイル(青色部分)を追加してください。
.side #categories li {
margin-top: 0px;
margin-bottom: 0px;
list-style-type: circle;
.subcategories a.foldmark {
font-size:9px; /* マークのフォントサイズ */
text-decoration: none; /* マークの文字装飾(何も表示しない) */
}
設定はデザインに応じて適宜変更ください。
8.注意事項
・本カスタマイズを行う場合、他の折りたたみメニューで "subcategories" という id 属性は使用しないで下さい。
・カテゴリーリスト自体を折りたたむ場合、リスト数の計数を適正に行うためにカテゴリーリストの id 属性名を「category」にしてください。id 属性名を変更したい場合は、menufolder.js の下記の赤色部分を使用する id 属性名に修正してください。
if (subCategoryCount) {
if (idName == 'category') {
objItems = objLists.getElementsByTagName('li');
} else {
objItems = objLists.getElementsByTagName('a');
}
} else {
objItems = objLists.getElementsByTagName('a');
}
9.FAQ
Q:折りたたみマークが表示されません
A:menufolder.js 起動スクリプトの設定(5.2(2)項)が誤っている、6項が設定されていない、6項で設定したパスに menufolder.js がない、2項のサブカテゴリーフラグが true になっていない、ブログと menufolder.js の文字コードが一致していない等が考えられます。
Q:カテゴリーリストのリスト数が表示されているカテゴリー数と一致しません
A:2項の subCategoryCount および8項の2番目の内容を再度ご確認ください。
Q:折りたたみマークをクリックするとマークが変わってしまいます
A:テンプレート内のどこかで不要な menufolder.js をインクルードしています。私はこれで2日ほど悩みました(バカ)
Q:他のアーカイブページにジャンプすると折りたたみマークや表示位置が変わってしまいます
A:ジャンプしたアーカイブのテンプレートで誤った menufolder.js をインクルードしている可能性があります(これも私)。
2004.12.13 追記
カテゴリーリスト数表示の注意事項がもれてましたので、記事引用くださっている方は8項の記述も追加してやってください。また5.2(2)のリストに冗長な部分がありましたので削除致しました。
2005.03.31 追記
サイドメニューツリー化スクリプトへのリンクを文中に追加しました。
2006.04.04 追記
リストから language 属性を削除しました(HTML4.01/XHTMLで非推奨あるいは廃止されているため)。
BlogPeople リンクリスト
サイドバー右に配している BlogPeople のリンクリスト(更新順に表示)がダイナミックに更新されなくなったのですが…私だけ?
Trackbackのタイムアウトについて
Magic White さんより当サイトへの「Trackbackがタイムアウトになる」というご連絡を頂きました。テストしたところ、(自PCからの送信で) Trackback処理が完了するまでに約100秒かかりました(かかり過ぎ…)。したがいましてタイムアウト値をそれ以下に設定されている場合はタイムアウトが発生する可能性があります。
タイムアウトになってもTrackback Pingを正常に受け付けた時点で送信先の処理は正常に行われるはずなのですが、今回頂いたご連絡では処理自体行われてませんでした。なお確認試験ではタイムアウトは発生したもののTrackback自体は受けつけられましたので、原因は不明のままです。
そういう訳で受け付けられない場合はこちらのエントリーまでご一報ください(何かできるという訳ではありませんが…)。とりあえずサーバは再起動致しました。
ShrinkFinfo Plugin 0.04公開
ShrinkFInfo Plugin で fileinfo.db サイズを表示するでサイズ表示を付与しましたが Ogawa::Memoranda さんよりファイルサイズ表示を盛り込んだ ShrinkFInfo Plugin 0.04 が公開されました。ファイルサイズ表示以外に、ウェルカム画面にもファイル縮小を促す表示(イメージ下)機能が追加されています。また表示する閾(しきい)値となるファイルサイズも適宜変更できるようになっています。デフォルトは1MBに設定されています。 ということで 0.04 へバージョンアップしました。 |
ShrinkFInfo Plugin で fileinfo.db サイズを表示する
2004.12.11 追記
本アイデアが盛り込まれた ShrinkFInfo Plugin 0.04 が公開されましたのでそちらを参照ください。
Movable Type を BerkeleyDB で利用する場合、再構築を繰り返す毎に db/fileinfo.db が肥大化する(その結果、再構築時間に影響が出ます)という問題があり、現在 fileinfo.db のサイズを縮小する ShrinkFInfo Plugin を利用させて頂いてます。
これは管理メニューに表示される "ShrinkFInfo Plugin, v?" のリンクをクリックすればサイズ縮小スクリプトが実行されるという仕組みになっていますが、クリック契機を簡単に知りたいと思い、画像のように fileinfo.db のサイズを表示するようにしてみました。Plugin 作成者のOgawa::Memorandaさんより快諾頂けましたので変更箇所をお知らせ致します。
ShrinkFInfo 配下の plugin.pl に青色部分を追加します。
use strict;
my $size;
$main::size = (-s '/path/db/fileinfo.db')/1000;
if (MT->can('add_plugin')) {
require MT::Plugin;
my $plugin = new MT::Plugin();
$plugin->name("ShrinkFInfo Plugin, v.0.03");
$plugin->description("Shrink enlarged db/fileinfo.db. Current size: $main::size Kbyte");
$plugin->doc_link("http://as-is.net/hacks/2004/11/mt_shrinkfinfo.html");
$plugin->config_link("mt-shrinkfinfo.cgi");
MT->add_plugin($plugin);
}
path の部分は db/fileinfo.db までのフルパスを適宜記述してください。
小数点以下を四捨五入して表示しない場合は下記のようにしてください。
$main::size = int(((-s '/path/db/fileinfo.db')/1000) + 0.5);
2004.12.10 追記
スクリプトを byte 表示から Kbyte 表示に修正しました。
2004.12.11 追記
小数点以下を四捨五入して表示しないパターンも追加しました(たびたびすいません…)。
Edit リンクを “Edit This” Bookmarklet に変更する
以前のカスタマイズで個別エントリーアーカイブの右下に「Edit」リンク、つまりエントリー編集画面へのリンクを設定していた(記事)のですが、
に乗り換えてみることにしました(これを投稿している時点ではまだ混在しています)。ありがとうございました。
動作的には、(IEの場合)個別アーカイブページやコメントプレビュー画面を表示している状態で、「お気に入り」に追加した"Edit This" を選択(または「リンク」に追加した "Edit This" をクリック)すると編集画面にジャンプすることができます。自力で Bookmarklet を作れない方も上記のリンクに Bookmarklet生成サービスを配してくださってますので面倒な作業は一切ありません。
ちなみにそこで設定する Blog ID はメインメニューのウェブログ名のURLの
- http:://?mt.cgi?__mode=menu&blog_id=1
の値を設定します。blog_id は管理メニューのURLの至るところに登場します(他に簡単に調べる方法ありましたらご容赦ください)。
サブカテゴリーと副カテゴリーでカテゴライズ
[旧カテゴリー]
![]() | サブカテゴリー機能を用いて、手始めに Movable Type 関連のエントリーをカテゴライズしました。 これまで Movable Type に関するエントリーについては使用中のバージョンに属する形で書いていたのですが、これを大幅に見直しました。文章で書くより左の新旧画像を見て頂ければお分かりになると思います。 例えばカテゴリーリストを用いて検索を行う場合、バージョンよりも機能や操作・概念等で分類した方が明らかに都合がいいです。テンプレートを公開している割に「テンプレート」というカテゴリーがないのも何なので独立したカテゴリーにしました。まだ全部ではありませんがカスタマイズについてはカテゴリーリストから視覚的に検索できるように分類してみました。時間をかけて他のエントリーについても適正なカテゴリーに配したいと考えてます。 訪問される方にとってはテンプレート等の一部のカテゴリーを除いて、バージョンがいくつであるかはたいした問題ではないのですが、個人的には日付アーカイブとは別にどのバージョンでどのような作業を行っていたかを記録したいと考えました。 この両者の要求を実現するにはエントリータイトルにバージョンを付与する等といった力任せの作戦もありますが、今回は「副カテゴリー」を用いることにしました。 |
[新カテゴリー]
![]() |
Movable Type ユーザー・マニュアル:カテゴリーに書かれている通り、各エントリーは、1つの主カテゴリーと1つ以上の副カテゴリーに割り当てることができます。主カテゴリーと副カテゴリーの間に優劣はなく、アーカイブリンクに主カテゴリーが便宜上用いられます。この機能を用いることで異なるカテゴリーに同一エントリーを配することができます。
副カテゴリーの設定方法は、図のようにエントリー編集画面の「主カテゴリー」の下に
- 複数のカテゴリーを設定する
というリンクをクリックします。クリックすると副カテゴリー設定画面がポップアップします。左の「ウェブログのカテゴリー」から新たに加えたいカテゴリーを選択し、>> ボタンで右の「副カテゴリー」に移動させ「保存」をクリックします。保存後、さらにエントリー編集画面の「保存」をクリックすれば作業完了です。
ということで、これまでのバージョン別のカテゴリーもそのまま残すことにしました。このカテゴリーには今までと同じエントリーが含まれています。が作業をやっている途中で気がついたので、一部該当カテゴリーから削除されているものもあります(バカ)。予めご了承ください。
Movable Type 3.121-ja アップグレード
3.11-ja から 3.121-ja にアップグレードしました。
ここでの内容は自宅サーバ用のアップグレード手順です。基本的な手順は3.11-jaアップグレードと同様です。文章も激しく同じです。
1.ダウンロード
Six Apart.よりアップグレード用のパッケージ(ダウンロード画面直前でフルインストールかアップグレードかを決めます)をダウンロードし、解凍します。
2.アップグレード前処理
解凍した中の下記のディレクトリをそれぞれ対応するディレクトリに、ファイルをローカル・サイト・パスにコピーします。大半が上書きされます(mt-upgrade31.cgi は環境によって配置先が異なります)。なお赤字のものはコピー対象外にしました(配下のファイルを変更または追加しており元の情報が上書きされてしまうため)。
- docs/
- extlib/
- images/
- lib/
- php/
- plugins/
- schemas/
- search_templates/
- tmpl/
- tools/
- mt.js
- styles.css
- mt-upgrade31.cgi
他にごちゃごちゃある .cgi ファイル等はコピーする必要はありません。plugins はプラグインを何も加えていない場合、また search_templates は配下のファイルを変更していなければコピーに加えてください。上書きにならないファイルは、
- mt-upgrade31.cgi
のみです。なお正規のアップグレード手順は docs 配下の mtupgrade.html に記載されています。ちなみにここには「extlibディレクトリ内のファイルをアップロードするときは、以前Movable Typeをインストールしたときにインストールしたライブラリをどれも上書きしないよう注意してください。」と書かれてますが、今回も思いきり上書きしてしまいました。
3.アップグレード実行
ブラウザより
- http://Blog-URL/mt-upgrade31.cgi
を実行します。
パソコンがガリガリとしばらく動作して、成功すれば下記の画面が表示されます(前回と表示内容が違ってました)。
4.不要ファイル削除
mt-upgrade31.cgiを削除します。
5.再構築
各アーカイブページを再構築します。これで各ページのバージョン表示が更新されます。
6.編集画面の拡張
直接アップグレードとは関係ありませんが、テンプレート編集画面やエントリー投稿画面のテキストエリアが狭く感じるので個人的に毎回広げてます。テンプレート編集画面は縦および横幅、エントリー入力画面は縦幅を修正しました。各ファイルの修正行は
- /tmpl/cms/edit_template.tmpl:128行
- /tmpl/cms/edit_entry.tmpl:200行
です。修正方法は上記のエントリーを参照ください。
以上です。
サイドメニュー折りたたみスクリプト(cookie等改善版)
サイドメニュー折りたたみスクリプトを改版致しました。
現在公開中のサイドメニュー折りたたみスクリプト(menufolder.js)は、
- cookie消費が大きい
- カスタマイズ性がよくない
という問題がありました。cookieは「1つのコンピュータに対し最大20までしか保持できない」という仕様です。現状の折りたたみスクリプトでは1メニューに対して1cookieを利用しているため、20近いメニューに折りたたみを設定している場合、同一コンピュータで使用している他のcookieが無効になる可能性があります。
今回は cookie を最大2個しか使用しない方式に変更致しました。なお本方式は日頃お世話になっている facet-divers さんよりアドバイス頂きました。この場をお借りしてお礼申し上げます。ありがとうございました。
またカスタマイズ性については、例えばBlogPeople等のメニューでリンク数を表示する場合、aタグを数えてからバナー等の不要なリンク数分をスクリプト内で減算するようにしています(下リスト参照)。
if (idName == "link1") {
counter = objItems.length - 3;
} else if (idName == "link2") {
:
が、複数のリンクを追加する場合、ここに id 属性分のプログラムを新たに実装しなければならないため、この設定方法はJavaScriptを書けない方には障壁になります。またその他の設定についてもプログラムを変更しなければならない実装になっており、その部分のカスタマイズについては説明を省いていました。さらに途中で状態保持や動作遅延対処の機能追加を行った関係で、最初からエントリーを追ってカスタマイズを進めて頂くのも非効率的に感じておりました。今回の改版では他の設定も含めてプログラムの先頭で提供する機能のカスタマイズが可能な方式に改善しております。
そういう訳で手順を含めてこのエントリーにまとめました。はじめてご利用になる方もこちらを参照頂ければ幸いです。
折りたたみスクリプトの主な仕様は下記の通りです。
- サイドバーのメニューを折りたたむことができます。
- 折りたたみマークをメニュータイトル部分に表示します。折りたたみマークはタイトルの左右または左端・右端のいずれかに表示します。表示位置は設定により切り替えられます。また折りたたみマークは任意の文字に変更できます。
- メニュー内のリスト数をタイトル部分に表示することができます。リスト数表示・非表示は設定によりメニュー単位で切り替えられます。リスト数はタイトルの左右に表示します。表示位置は設定により切り替えられます。またリスト数を"()"や"[]"等の任意の文字で括ることができます。
- cookieを利用して折りたたみ状態を保持することができます。また状態保持の有効・無効を設定により切り替えられます。
- サブカテゴリーのリスト数表示を li タグ数で収集します。また従来の一括表示での収集方法を設定により切り替えられます。
以下設定手順です。なおこれまでの menufolder.js をご利用下さっている方でご利用になる場合、基本的に必要な作業としては新しい menufolder.js への差し替えと2項の設定です。ただし文字コードや id 属性名によっては他の項目についても変更が必要になります。また念のためこれまでの js ファイルもバックアップとして保存しておいてください。
1.menufolder.js ダウンロード
下記のリンクをクリックするとスクリプトのページへジャンプします。そこで menufolder.js をクリックし、同じファイル名でご自身のPCに保存してください。
本スクリプトはUTF-8で記述していますので、ブログで使用している文字コードがUTF-8以外の場合(Shift_JIS/EUC-JP等)は保存後、文字コードを適宜変更して再保存してください。この問題につきましては js ファイルのインクルード時、script タグにcharset 属性を指定することで文字コードを変更しなくても良いという記事を見つけましたが動作実績がありませんのでこのような記述にしています。scriptタグの設定については3項に記してますのでお試し頂ければ幸いです。
2.menufolder.js の設定内容を修正
ブログの設定内容に合わせてファイルの先頭にある下記の赤字部分を修正します。
// サイドメニュー用折りたたみマーク
var openMarkForSideBarMenu = '▽';
var closeMarkForSideBarMenu = '△';
// 折りたたみマーク挿入位置
// タイトル前に折りたたみマークを配置:true
// タイトル後に折りたたみマークを配置:false
// 左端または右端に折りたたみマークを配置(スタイルシートの設定が必要です):true
var preMarkForSideBarMenu = true;
// リスト数表示位置
// タイトル前にリスト数を表示:true
// タイトル後にリスト数を表示:false
var listNumberPosition = true;
// リスト数表示を括るマーク
var leftMarkForListNumber = '';
var rightMarkForListNumber = '';
// タイトル表示位置補正方向(スタイルシートで左端または右端に配置した場合)
// タイトルを右方向に移動:true
// タイトルを左方向に移動:false
var centeringPosition = true;
// タイトル表示位置補正オフセット(スタイルシートで左端または右端に配置した場合)
var offsetForCentering = 2;
// リンクメニュー数
// 他にリンク数を減算する必要があるメニューもここに含めてください
var linkNumber = 2;
// 各リンクメニューのオフセット値
// 注:id属性名は「linkx(xは数字)」であること
var offsetValue = new Array(linkNumber);
offsetValue[0] = 3;
offsetValue[1] = 2;
// トラックバック数の除数
// 注:id属性名は「trackback」であること
var trackbackNumber = 2;
// カテゴリーリスト数計算方法
// サブカテゴリーのカテゴリー数を適正に計数する
// サブカテゴリーに対応:true
// 従来のカテゴリーに対応:false
var subCategoryCount = false;
// 状態保持フラグ
// 状態保持を有効にする:true
// 状態保持を無効にする:false
var holdState = true;
設定方法の詳細は下記の通りです。上記リストの青字部分が該当行、赤字が設定値を示しています。
openMarkForSideBarMenu/closeMarkForSideBarMenu
- 名称:サイドメニュー用折りたたみマーク
- 用途:サイドメニューのタイトル横に表示する折りたたみ用リンクのマーク
- 設定値:任意の文字(設定したマークを''で括るように)
preMarkForSideBarMenu
- 名称:マーク挿入位置
- 用途:折りたたみマークをタイトルの前後どちらに表示するかを設定します。
- 設定値: true:タイトルの前に表示/false:タイトルの後に表示。ただしメニューの左端または右端に表示する場合は true を設定(スタイルシートで位置を調整します)
listNumberPosition
- 名称:リスト数表示位置
- 用途:リスト数表示位置をタイトルの前後どちらに表示するかを設定します
- 設定値: true:タイトルの前に表示/false:タイトルの後に表示
leftMarkForListNumber/rightMarkForListNumber
- 名称:リスト数表示を括るマーク
- 用途:「left?」には左側の文字('('、'['等)、「right?」には右側の文字(')'、']'等)を設定します。何も設定しない場合はいずれも '' という状態にしてください。また片方だけの設定も可能です。
- 設定値:任意の文字
centeringPosition
- 名称:タイトル表示位置補正方向
- 用途:スタイルシートで折りたたみマークを左端または右端に配置する場合、タイトルがメニュー中央から外れるので、タイトル位置を補正するための方向を設定します。補正する必要がない場合は本項目はそのままの状態にして、次の offsetForCentering の値に「0」を設定してください。
- 設定値: true:タイトルを左方向に移動/false:タイトルを右方向に移動
offsetForCentering
- 名称:タイトル表示位置補正オフセット
- 用途:上記の centeringPosition で補正する方向のオフセットを半角数字で指定します。なお「1」は半角1文字に相当します。
- 設定値:任意の値。不要な場合は「0」を設定。
linkNumber
- 名称:リンクメニュー数
- 用途:BlogPeople・MyBlogList等のリンクリストの数を半角数字で設定します。
- 設定値:任意の数字(1つであれば「1」)。リンクリストがない場合は「0」。
setValue[x]
- 名称:各リンクのオフセット数
- 用途:タイトル左にリスト数を表示する際、a タグの数の合計を表示するのですが、リンクリストの場合はバナー等の計数に不要な a タグが含まれている場合があります。この不要な a タグの数をメニュー毎に設定します。また [x] の部分にはそのメニューが(リンクの中で)何番目に表示されるかを指定します。 1番目に表示されるものはプログラムの都合上 [0] 、2番目に表示されるものは [1] …という具合に設定してください。メニューが表示される順番は画面の左上から右下です。エントリーやカテゴリー等の他のメニューは数に含みません。先に指定した linkNumber で何番目に表示されるかを計算します。linkNumber を「0」に設定した場合はこの設定を変更する必要はありませんので、そのままにしておいてください。
- 設定値:任意の数字(1つ減算する場合は「1」)
trackbackNumber
- 名称:トラックバック数の除数
- 用途:トラックバックのリスト数を表示する場合、aタグの数の合計を表示するのですが、トラックバック先のリンクとトラックバック元のリンクを同時に表示しているとリスト数が倍になってしまいます。この値はその除数を指定するものです。「2」となっている場合はリスト数の合計を2で割ります。
- 設定値:除数を半角数字で設定
subCategoryCount
- 名称:カテゴリーリスト数計算方法
- 用途:カテゴリーリスト数計算方法を li タグ(サブカテゴリー表示)で計数するか、a タグ(従来の一括表示)で計数するかを指定します。
- 設定値: true:li タグで計数/false:a タグで計数
holdState
- 名称:状態保持フラグ
- 用途:折りたたみ状態を cookie に保持する/しないを設定します。「保持」を設定した場合、最後に変更した折りたたみ状態が他のページへのジャンプ時やブラウザ起動時、および更新時に反映されます。
- 設定値: true:有効/false:無効
設定内容の変更に自信のない方はそのままお使いください(右端に折りたたみマークを設定・リスト数をタイトル前に表示する設定になっています)。その際、6項のスタイルシートは一番最初のものをお使いくださいますようお願い致します。
修正の際にはカスタマイズ箇所以外の部分に全角文字(全角空白)を含まないようお気をつけください。
3.menufolder.js 配置
menufolder.js の修正が終わったら保存し、ローカル・サイト・パスに配置してください。「配置」とはレンタルサーバの場合はFTPツール等によるアップロード、自宅サーバの場合は単なるコピーを示します。
4.テンプレートの設定1(menufolder.js のインクルード文追加)
折りたたみを利用する各テンプレートの <head>~</head> の間に下記のタグを追加してください。charset 属性は menufolder.js の文字コードを指定してください。
<script type="text/javascript" src="<$MTBlogURL$>menufolder.js" charset="utf-8"></script>
5.テンプレートの設定2(各メニューに id 属性追加)
下記の要領で、折りたたみたいサイドメニューのタイトルに「id="xxname"」、リストの方に「id="xxlist"」を付与します。"name"と"list"は固定名称です。"xx"の部分にはメニュー毎に異なる名称を付与します(例えばカテゴリーリストは"category"、エントリーは"entry"等)。同じ名称が存在すると正常に動作しませんのでご注意ください。
下記は設定例です。この例と同じように各メニューに青色部分の id 属性を追加してください。
<div class="sidetitle" id="categoryname">
Categories
</div>
<div class="side" id="categorylist">
<MTCategories>
<a href="<$MTCategoryArchiveLink$>">
<$MTCategoryLabel$></a> [<$MTCategoryCount$>]<br />
</MTCategories>
</div>
なおリスト数表示を補正する必要がある BlogPeople や MyBlogList 等のリンクメニューにつきましてはid属性を "linkx?"(xは半角数字)で統一してください。その場合のタイトル部は「id="link1name"」、リスト部は「id="link1list"」という具合になります(複数存在する場合は数字の部分が増えていきます)。
6.テンプレートの設定3(menufolder.js 実行スクリプトを追加)
折りたたみたい各メニューの下(サンプルは5項のカテゴリーリスト)に青色部分のスクリプトを追加します。
<div class="sidetitle" id="categoryname">
Categories
</div>
<div class="side" id="categorylist">
<MTCategories>
<a href="<$MTCategoryArchiveLink$>">
<$MTCategoryLabel$></a> [<$MTCategoryCount$>]<br />
</MTCategories>
</div>
<script type="text/javascript">
<!--
FoldNavigation('idName','initState',viewListNumber);
//-->
</script>
赤字部分は適宜変更します。それぞれの意味と設定値は下記の通りです。
idName
- 名称:id属性名
- 用途:折りたたむメニューのid属性を指定します。
- 設定値:このスクリプトの直前のメニューのid属性名("name"または"list"を除去した形)
initState
- 名称:初期状態
- 用途:ページを最初に表示した時の折りたたみ状態を指定します
- 設定値: on:開いた状態/off:閉じた状態
viewListNumber
- 名称:リスト数表示
- 用途:メニュータイトル横にリスト数の表示・非表示を設定します
- 設定値: true:表示/false:非表示
例えば、カテゴリーリストメニュー用のid属性に"category"を指定、初期状態は「開く」、リスト数を表示する場合、カテゴリリストメニューの直下に、
<script type="text/javascript">
<!--
FoldNavigation('category','on',true);
//-->
</script>
という内容で配置します。
7.スタイルシート設定
スタイルシート(styles-site.css)の .sidetitle の下に下記(注:青色部分のみ)を内容を追加します。以前のものと異なりますが動作的には同じです(多分)。2項の設定パターンによってスタイルシートの設定内容が若干異なりますので該当するものをお選びください。
右端にマークを表示
.sidetitle a.foldmark {
float: right; /* マークを右端に配置 */
font-size:9px; /* マークのフォントサイズ */
padding-right:3px; /* 右端からのパディング */
text-decoration: none; /* マークの文字装飾(何も表示しない) */
}
左端にマークを表示
.sidetitle a.foldmark {
float: left; /* マークを左端に配置 */
font-size:9px; /* マークのフォントサイズ */
padding-left:3px; /* 左端からのパディング */
text-decoration: none; /* マークの文字装飾(何も表示しない) */
}
タイトル前にマークを表示
.sidetitle a.foldmark {
font-size:9px; /* マークのフォントサイズ */
padding-right:3px; /* タイトルとマーク間のパディング */
text-decoration: none; /* マークの文字装飾(何も表示しない) */
}
タイトル後にマークを表示
.sidetitle a.foldmark {
font-size:9px; /* マークのフォントサイズ */
padding-left:3px; /* タイトルとマーク間のパディング */
text-decoration: none; /* マークの文字装飾(何も表示しない) */
}
上記サンプルはそのままでも使える値に設定していますがデザインに応じて適宜変更ください。
2005.06.08 追記
6項の記述を修正しました。
2006.04.04 追記
リストから language 属性を削除しました(HTML4.01/XHTMLで非推奨あるいは廃止されているため)。
サイドメニューの折りたたみスクリプト改修中
公開中のサイドバー折りたたみスクリプトですが、cookie保持の改善版をただいま鋭意作成中です。本当は土曜日中にエントリーを公開したかったのですが、他の改善も含めて色々と修正していたら間に合わなくなってしまいました。カスタマイズ手順もこれまでのものをまとめて、新たに作り直す予定です。
ということで、かなりゴージャスなスクリプトに生まれ変わって登場する予定です(設定がかえってややこしくなるという噂も…)。乞うご期待ください!
カテゴリーをちょっと変更
今まで Movable Type 関係のエントリーは使用しているバージョンで記事を一律振り分けていましたが、この方法では訪問くださる方にはかなり分かりにくいことを薄々感じてました。私も分からなくなってきました(笑)。
バージョン自体に関する記事は該当のエントリーで構わないとしても、例えば折りたたみについては改善の途中でアップグレードがあり、結果的に異なるカテゴリーに含まれてしまっています。テンプレートも同様で、テンプレートの記事がバージョンカテゴリーに埋もれてしまっているので探しにくいです。
そういう訳で手始めにテンプレート関係のエントリーを分けました。カスタマイズも内容別に徐々に振り分けていきます。カテゴリー名も「Movable Type」の文言を省いてバージョンのみの表示にしていますがサブカテゴリー化に向けた修正過渡期ということで。
カテゴリーのメニューリストは直接そのアーカイブページを参照する・しないとは別に、どのような記事が掲載されているかが分かる重要なファクターのひとつであると思っています。将来的にはサブカテゴリー化を含め、少なくとも Movable Type 関連のカテゴリーが一目瞭然になるような体系にしたいと思います。
サイトにアクセスできない原因
最近サーバに一時的にアクセスできない事象が発生しており、申し訳ございません。
まず前提として、本サーバは固定IPでないためIPアドレス変更時に Dice というツールを使ってDynamicDNSサービスに変更されたIPを通知する仕組みを使ってます。
アクセスできない原因と思われるのはこのDynamicDNSへのIP変更通知で、通知自体はIPが変更されるとリアルタイムに行われるのですが、DNSサーバに通知の変更が反映されるまで時間がかかる(数十分とか)場合があるようです。つまり yujiro.dyndns.org のドメインでアクセスした場合、古いIPアドレスに変換されるため新しいIPが割り当てられたサイトがみつからない、という訳です。IPアドレスの変更がアクセスの多い時間帯に行われるとこのような事象に遭遇する可能性が高くなると思われます。
ということでアクセスできない場合は時間をおいてから再度アクセスくださいますようよろしくお願い致します。このような事象が頻発するとサーバの接続品質を保つ難しさを感じさせられます。
Movable Type 3.121の提供を開始
Movable Type 3.11のマイナーバージョンアップ版の3.121が提供されました。更新履歴はこちらです。個人的には
- MTSubCategoriesの中でMTCategoryCountを用いると公開状態でないエントリーも数え上げてしまう不具合を修正した。(ogawa)
がポイント大きいです。日本語化も進んでいるみたいですが コメント・プレビュー画面の"HTLM" は修正されていませんでした。
なおMagic WhiteさんのMovable Type 3.121になりました。より、公開中の3.11用テンプレートでの動作は問題ないことが確認されています(早々のご連絡ありがとうございました)。ただしアップグレードではカテゴリーの構成が崩れてしまうようですので予めカテゴリー構成のバックアップをとる等の対処が必要みたいです。ご注意ください。
ダウンロードして試しに新規インストールしてみました。日本語化された mt-check.cgi、mt-load.cgi は下記の通りです。
カテゴリーアーカイブで全カテゴリーリスト表示の記事修正
お詫びです。先日エントリーしたカテゴリーアーカイブで全カテゴリーリストを表示で正規な表示方法があることが判明致しました。
<MTSubCategories>~</MTSubCategories>
を
<MTTopLevelCategories>~</MTTopLevelCategories>
に置き換えるだけでできました。
この方法はNotebook :: Hibi no Noteさんから頂いたコメントより判明致しました。
ということで該当のエントリーの内容を修正するとともに、誤解を招くカスタマイズ方法を公開したことをこの場をお借りしてお詫び申し上げます。
なおモジュール化によるカスタマイズをされたものにつきましては変更の必要はございません(上記タグを使用する方が本来的ですが変更されても動作は変わりません)。またモジュール化自体につきましてもメリットが多いので、そのままご利用頂ければ幸いです。
スペースシャトルから見た富士山
28日の晩、たまたまNHK教育「N響アワー」を見ていました(毎回見ている訳ではありませんが…)。番組には宇宙飛行士の毛利衛さんがゲストで出演されていまして、毛利さんは子供の頃からクラシック音楽が趣味だったようです。想い出の品として、擦り切れるほど聴いたと思われるボロボロのSP盤を持ってこられてました。
それはさておき、番組の中で毛利さんがスペースシャトルに搭乗した時にハイビジョンカメラで撮影した映像がいくつか放映されました。そのひとつに地球の地表を撮影した時に関東平野が映ったものがあり(狙っていたのではなく偶然日本上空だった模様)、関東平野をズームアップしていくと、平野の西の方にちょっと白い色をした突起物が見えました。そう、それは雪を被った富士山だったのです。
「ハイビジョンカメラで撮影した映像はスペースシャトルから見るのとほとんど同じように見えます」という毛利さんのコメント通り、ズームアップした富士山は小さいながらもはっきり見えました。そして今までに見たことがないアングルということもあり、大変印象深いものでした。
その他にも地球を様々な角度から撮影した映像が放映され、ハイビジョンで撮影された数々の光景の美しさに思わず感動(テレビはハイビジョンではありません)。
ということで、再放送があったら是非見てやってください。他の番組でも既に放映されているのかも知れませんね。
ちなみにこんな感じで映ってました↓
あ、出ちゃいました(笑)
おぉ!いきなり「おじゃる丸」が!(って番組見たことないんですが)


Movable Type ユーザー・マニュアル、いつもトップページURLの後ろに "docs" と打ち込んでジャンプしていたのですが、だんだん面倒になってきたのでサイドバーのメニューとして追加してみました。今のところ



