カテゴリー名の日本語表示について
MovableTypeでカテゴリー名の設定で英数字のみ使用している場合に、日本語名に変換して表示する方法を紹介します。
ここで紹介する方法はMovableTypeのページをPHP化していることが前提です。
当サイトはPHP化をしていて、カテゴリー名の設定は先頭5桁の数字とアルファベットでカテゴリー名を設定しています。
01100mail
01200visit
01300enquete
・
・
・
このようにしていて、先頭5桁の数字はカテゴリー並べ替え用として、アルファベット部分はディレクトリ名として使用するためです。
5桁の数字は、大きくしておくと間に新しくカテゴリーを追加しやすくするためです。
そして、日本語に置き換えする部分はアルファベット部分を使用しています。
この置き換えには、PHPを使用しています。
PHPでカテゴリー名置き換え関数を作成して、メニュー部分や他のカテゴリー名表示部分を置き換えています。
関数の内容は以下のようになっています。
<?php
function RepCategoryName($catlabel)
{
$title = "" ;
$catlabel=mb_substr($catlabel,5);
switch ($catlabel) {
case "networks":
$title = "ネットで稼ぐ" ;
break ;
case "info":
$title = "はじめに" ;
break ;
case "mail":
$title = "受信メール" ;
break ;
case "visit":
$title = "サイト訪問" ;
break ;
case "enquete":
$title = "アンケート" ;
break ;
・
・
・
default:
$title = $catlabel ;
break ;
}
return $title;
}
?>
1行目の「$catlabel」は、MovableTypeのカテゴリー名を渡しています。
4行目の「$catlabel=mb_substr($catlabel,5);」では、先頭5桁の数字を取り除いています。
6行目の「switch case文」で5桁の数字を取り除いたカテゴリ名を比較して一致する物の日本語名を「$title」に代入しています。
そして最後に「return $title;」で日本語名を関数の呼び出し元へ返しています。
「default:」の部分は、該当するアルファベットのカテゴリ名が無い場合にそのままカテゴリー名が返すための処理です。これは、アルファベット名のカテゴリ名をそのまま使用する場合に使用しています。
カテゴリーが増えた場合は「caseからbreak ;」までの行を増やせば対応できます。
PHPの関数を作るにあたって日本語名を置き換えたりする場合のポイントは、関数などを作成したファイルはMovableTypeのテンプレートでファイルを作成することです。そうすれば、文字コードの違いによる文字化けを防ぐことができます。
もちろん、「mb_convert_encoding」を使用するのも一つの方法ですが。
この関数を含んだファイルをテンプレートで作成します。
名前は、「common.php」とでもしておきましょう。
そしてファイルを再構築で作成したら、
テンプレートの一番上の部分で
<?php
require_once '<$MTBlogURL$>common.php';
?>
このようにして、PHPファイルを読み込ませます。
では、実際の関数の呼び出し部分はどうなってるかというと、サイドバーのメニューを例にして
<MTIfArchiveTypeEnabled archive_type="Category">
<MTSubCategories>
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<?= RepCategoryName('<$MTCategoryLabel$>') ?>"><?= RepCategoryName('<$MTCategoryLabel$>') ?></a> [<$MTCategoryCount$>]
<MTElse>
<li><?= RepCategoryName('<$MTCategoryLabel$>') ?>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse max_depth="3">
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</MTIfArchiveTypeEnabled>
簡単にいえば、<$MTCategoryLabel$>を使用しているところで関数を使用するだけです。
<?= RepCategoryName('<$MTCategoryLabel$>') ?>
このようにすることで、英数字で設定しているカテゴリー名を日本語表示変換することができます。
これからMovableTypeをPHP化しようと思う方は、「CutFirstCharプラグインを使用する出力フォーマット」と併せて見ていただけると参考になるかと思います。
トラックバック
このエントリーのトラックバックURL:


