CYBER@GARDEN

home > Web::Blogoscope > MT 3.2-jaのカテゴリー名

Web::Blogoscope

MT 3.2-jaのカテゴリー名

10日ほど前にMovable Typeを3.2-jaにアップデートしたはよいけど、カテゴリーのフォルダ名が重複してしまっていることに気づかなかったという大ボケぶりを遺憾なく発揮。

どうやら、TypePad Newsで説明されていた

カテゴリーページのフォルダ名の生成ルールの修正

修正内容:
カテゴリー名を「半角+全角」とした場合にカテゴリーページのフォルダ名が全角を除いた半角のみになる仕様を、カテゴリーページのURLの重複対策のため「cat数字」となるように修正を行ないました。

影響範囲:
カテゴリー名に「半角+全角」を使用しているカテゴリーページ のURLが変更されます。
カテゴリー名に半角と全角を混在させていないページ、個別ページ、月別などのアーカイブページには影響ございません。

カテゴリーアーカイブをご利用でかつカテゴリー名に「半角+全角」をご利用の場合ですと、カテゴリーページへのリンク切れが起こりますので、大変お手数ですがブログ>デザイン>現在のデザインを編集ページの"ブログの再構築"からすべてのページの再構築を行なって頂けますようお願い致します。

と関係がありそうだ。Movable Type 3.171-jaではこのような問題は発生しなかった。3.2-jaの変更点はまだ公開されていないが、カテゴリー名を「半角+全角」で指定してしまうと「全角」は消されて「半角」だけになるということで、上記の仕様は反映されていない模様。だからカテゴリーのフォルダ名の重複問題が発生した。

慌てて次のように対応した。

1. カテゴリー名の変更

まず、カテゴリー名に全角と半角を混在させないことが前提となる。「全角のみ」にすれば「cat数字」が自動的に割り当てられるが、あまり格好がよろしくない。したがって、

  1. カテゴリー名は「半角のみ」で指定(例: Web Trend 1)。
  2. カテゴリーの説明に「全角(+半角)」でページ上に表示させたい名前を指定(例: Webトレンド1)。

とする。

その後、各テンプレートの「MTCategoryLabel」を「MTCategoryDescription」に変更する。たとえば次のようにだ。

<h2>Categories</h2>
<ul>
  <MTCategories>
    <li>
      <a href="<$MTCategoryArchiveLink$>">
        <$MTCategoryLabel$> (<$MTCategoryCount$>)
      </a>
    </li>
  </MTCategories>
</ul>

<h2>Categories</h2>
<ul>
  <MTCategories>
    <li>
      <a href="<$MTCategoryArchiveLink$>">
        <$MTCategoryDescription$> (<$MTCategoryCount$>)
      </a>
    </li>
  </MTCategories>
</ul>

これで「カテゴリー名」がフォルダ名としてキープされながら、ページ上では「カテゴリーの説明」の内容が表示されることになる。

2. カテゴリーの列挙順序の指定

カテゴリーの列挙順序を指定したい場合はどうか。Movable Typeではカテゴリー名を「0-9, a-z」の順序で自動的にソートするので、表示させたい順に「01」「02」といった通し番号をカテゴリー名につければよい(例: 01 Web Trend 1)。あるいは「a」「b」というアルファベットをつけてもよいだろう。通し番号は当然フォルダ名にも反映されてしまうが、その点は目をつぶる。

余談だが、カテゴリー名に含めた半角スペースは「_」(アンダースコア)に変換されるが、「-」(ハイフン)は消去される。したがって、単語間の区切りを視覚的に明確にしたい場合は、半角スペースにするか、明示的に「_」を挿入するとよいだろう。

なお、このテクニックは米Six Apart社のMovable Type 3.2 Users Manualでも使われている(と思う)。

3. RSS/Atomファイルの調整

RSS/Atomファイルでも上記の設定を有効にするには、ソース内のカテゴリー名の部分を次のように変更する。

RSS 1.0

<dc:subject><$MTEntryCategory encode_xml="1"$></dc:subject>

<MTEntryCategories glue=" |">
  <dc:subject><$MTCategoryDescription encode_xml="1"$></dc:subject>
</MTEntryCategories>

RSS 2.0

<category><$MTEntryCategory encode_xml="1"$></category>

<MTEntryCategories glue=" |">
  <category><$MTCategoryDescription encode_xml="1"$></category>
</MTEntryCategories>

Atom 1.0

<category term="<$MTEntryCategory encode_xml="1"$>" />

<MTEntryCategories glue=" |">
  <category term="<$MTCategoryDescription encode_xml="1"$>" />
</MTEntryCategories>

MTCategoryDescriptionMTEntryCategoriesに含まれなければならないので(エントリーが属するカテゴリーを示す場合)、このようにやや面倒な指定になっている。

なお、MTEntryCategoriesglue属性は、そのエントリーが複数のカテゴリーに属する場合の区切り文字の指定だ。1エントリー1カテゴリーと決めているのであれば(私はそう)特に必要はないが、つけておいても何ら問題はない。

Posted on 2005-10-14T17:43+09:00 | Category: ブログトレンド

トラックバックPings

トラックバックのURI:
http://www.cybergarden.net/mt/mt-tb.cgi/225

コメント

« ブログ文章の制約条件 | ブログトップ | 書評『秀丸エディタ超活用術』 »