やっと直った.

この Homepage で利用している Movable Type 3.01D-ja だけども、ブログのエントリを記述して構築すると、なぜかエントリ ID $MTEntryPermalink が正しく生成できていなかった。
構築後の各ブログ・エントリの下にある作成時刻のリンクが指している参照には、先頭に #aXXXXXX のように a が付く:

https://mikeforce.net/blog/archives/2004_09.html#a000100

しかし、フィードの index.rdf のリンクや左のバーにあるエントリの参照には、先頭に a が付かないのである:

https://mikeforce.net/blog/archives/2004_09.html#000100

そのため、フィード・リーダなんかで参照しようとしても、いつもページの先頭が引用される。つまり、正しくブログのエントリを引けない訳である。なんとも、情けない。
前者の a が付く出力結果になるのは正しいW3C の Markup Validiation でも検証できるし、実際にテンプレートで a を記述しているのだから、その出力として a が付くのは当然の結果だ。

<h3 class="title" id="a<$MTEntryID pad="1"$>"><$MTEntryTitle$></h3>

後者は構築時に、それぞれのテンプレート中で変数 $MTEntryPermalink が展開された結果で埋まる。これは生成時に MovableType のモジュール内で処理された内容に展開されるようではあるが、てんで見当が付かずにいた。
でも、やはり気になるので、MT/lib/MT 配下を闇雲に grep していると、MT/lib/MT/Entry.pm にそれらしい記述があるではないか!
いままで俺は何を捜していたのだろう…というくらい、見れば直ぐに分かるコードだった:

244 sub permalink {
245     my $entry = shift;
(SNIP)
255     $url .= '#' . ($_[1]->{valid_html} ? 'a' : '') .
257     sprintf("%06d", $entry->id)

早速、修正して再構築をかけたところ、見事に直った。
ついでに フィード・リーダ のキャッシュをクリアして正しく参照できるようにした。
よかった。よかった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*