2007年8月28日
Movable Type 4用のカテゴリー/フォルダの並べ替えプラグインを公開しました。
画面上でカテゴリー/フォルダを並べ替えることができ、使い勝手が大幅に上がっていますので、MT4の方はそちらのプラグインをお使いください。
昨日のエントリーに引き続いて、カテゴリーの並べ替えの第3回目をお送りします。
今日は、カテゴリーアーカイブファイルの出力先を指定する方法を解説します。
1.MTCategoryFileNameタグとMTCategoryFilePathタグ
昨日のエントリーでプラグインをインストールしましたが、このプラグインによって、「MTCategoryFileName」と「MTCategoryFilePath」というテンプレートタグが追加されます。
MTCategoryFileNameタグは、「連番|出力先|カテゴリー名」の中から、真ん中の「出力先」の部分を取り出す働きをします。
例えば、カテゴリーの設定で「0100|pc|パソコン」のように名前を割り当てた場合、MTCategoryFileNameタグの出力は「pc」になります。
また、MTCategoryFilePathタグは、トップレベルカテゴリーから順に、出力先を「/」で区切ったものを出力します。
例えば、トップレベルカテゴリーとして「01000000|pc|パソコン」を作り、そのサブカテゴリーとして「01000100|hardware|ハードウェア」を作った場合、MTCategoryFilePathタグの出力は、「pc/hardware」になります。
2.アーカイブファイルの出力先の設定
上記のタグを使い、アーカイブファイルの出力先を設定します。
Blogの設定のページで「公開」のタブをクリックして、「公開の設定」のページを開きます。
その末尾に「アーカイブマッピング」の部分がありますが、その中の「カテゴリー・アーカイブ」の右の欄で、選択肢の中から「カスタマイズする」を選びます。
すると、カテゴリーアーカイブファイルの出力先を入力できる状態になりますので、以下のように入力します。
なお、「index.xxx」の「xxx」は、同ページの「アーカイブの拡張子」で設定した拡張子です。
| カテゴリーアーカイブのURLの形式 | 入力する内容 |
|---|---|
| http://(Blogのアーカイブのディレクトリ)/各カテゴリーの出力先/index.xxx | <$MTCategoryFileName$>/%i |
| http://(Blogのアーカイブのディレクトリ)/トップレベルカテゴリーの出力先/サブカテゴリーの出力先/index.xxx | <$MTCategoryFilePath$>/%i |
3.Blogの再構築
設定が終わったら、Blog全体を再構築します。
これで、カテゴリーアーカイブの出力先が変わり、それに合わせて各ページ内のカテゴリーアーカイブページへのリンクも変わります。









コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
はじめまして。
プラグインを利用させて頂いております。
ただ、判定に「|」を用いている関係で正規表現を用いて判定するプラグインとの併用で結構問題が生じています。
もし、プラグインをカスタマイズされる予定がありましたら、|から_へ変更して頂いた方が他プラグインとの融和性を高める事が出来るのでは無いでしょうか?
(私は個人使用において、上記カスタマイズ…と言うほどではナイですが、変更して使ってます)
>uzukiさん
こんにちは。
プラグインご利用ありがとうございます。
ご指摘の件は、プラグインの機能として入れてあります。
その使い方をエントリーにしておきましたので、ご参照ください。
http://www.h-fj.com/blog/archives/2006/05/04-104716.php
壱さま、大変便利なプラグインをありがとうございます。
不明な点と質問がありますので、こちらでコメントさせていただきます。
まず不明な点は、初期の段階でアーカイブマッピングを
以下のように設定しました。
エントリーのエントリーアーカイブ
archives/<$MTArchivesDate format="%Y/%m?%d-%H%M"$>.php
日別の日付アーカイブ
archives/<$MTArchivesDate format="%Y/%m/%d"$>-index.php
月別の日付アーカイブ
archives/<$MTArchivesDate format="%Y/%m"$>.php
カテゴリーのカテゴリーアーカイブ
/%i
※並べ替えを設置する前はarchives/cat_<$MTArchiveCategory dirify="1"$>.php
としていました。
(テンプレートを小粋空間さんから頂いているので、日別にチェックを入れています)
ブログのURLをhttp://www.aaa.ne.jp/bbb/とします。
その結果、
カテゴリーで見るとURLがhttp://www.aaa.ne.jp/bbb///となり、
エントリーで見るとhttp://www.aaa.ne.jp/bbb/archives/.phpで500エラーが表示されます。
日別で見るとhttp://www.aaa.ne.jp/bbb/archives/-index.php
月別で見てもhttp://www.aaa.ne.jp/bbb/archives/.phpで500エラーが表示されます。
カテゴリーは
005000000_Diary_Diary
005005000_Diary_Diary
010000000_Favorit_Favorit
010005000_Music_Music
・
・
・
という感じで設定しました。
テンプレートにはdelimiter="_"を追加しています。
archivesを生かしたいので、カテゴリーのディレクトリがarchiveの中に作成されるようにしたいのです。
アーカイブマッピングの設定ミスかと思いますが、この現象の原因がおわかりになるようでしたら、
ぜひ教えていただきたいと思います。
例えば、エントリーのアーカイブのURLで言えば
http://www.aaa.ne.jp/bbb/archives/Diary/2006/05/05-1643.php
という感じで、表示されればよいのですが、無理でしょうか。
最後に質問は、今後並べ替えの都合で数字が変わった場合でも、ディレクトリは変わらずに済むのでしょうか。
例えば、今
005000000_Diary_Diary
005005000_Diary_Diary
としていますが、
これを
003000000_Diary_Diary
003005000_Diary_Diary
として、
新しく
005000000_Shoping_Shoping
005005000_CD_CD
などにした場合でも、過去に005000000の番号がついていたDiaryに変更は起きないのでしょうか。
003005000_Diary_Diaryとしたカテゴリーの新しくエントリーを書いても、過去の記事と一緒にDiaryのディレクトリに入れられるのでしょうか。
よろしくお願いたします。
>にうさん
こんにちは。プラグインご利用ありがとうございます。
ご質問の件ですが、カテゴリーアーカイブのマッピングを以下のようにしてください。
<$MTCategoryFilePath delimiter="_"$>/%i
また、番号を付け替えても、カテゴリーの出力先は変わりません。
お返事ありがとうございます。
お手数かけてすみません。
タグを書き足してみましたが、
改善の兆しがないようです。
カテゴリーの部分でディレクトリがhttp://www.aaa.ne.jp/bbb/Diary/Diary/このように表示されましたが、
.phpというファイル名が表示されません。
また、その他の部分では、先に書いたままの状態です。
検索して壱さんの改良版を利用してる方のBlogを見ても、同じような現象で困った方もいなかったし…
行き詰まっております。
カテゴリー以外はアーカイブマッピングはカスタマイズできないのでしょうか。
度々申し訳ありませんが、ご教授お願いたします。
>にうさん
こんにちは。
カテゴリーアーカイブへのリンクが「/」で終わって「.php」が出ないのは、MT3.2の仕様です。
また、アーカイブマッピングでは、確かMTの仕様で、それぞれのアーカイブに関連するタグだけが使えるようになっていると思います。
そのため、カテゴリーアーカイブ以外のところでは、MTCategoryFilePathタグは使えないと思います。
度々で、本当に申し訳ございませんでした。
カテゴリー以外のアーカイブマッピングについては、格闘してます。
投げ出すわけにもいきませんが、しばらく休憩して再格闘してみます。(ちょっと疲れちゃいました(笑))
ありがとうございました。
先日は大変お世話になりました。
無事設置ができました。
いろいろ便利ですごくうれしいです。
ありがとうございました。
再度質問ですが、ツリー化をしてみたところ親カテゴリーが表示されません。
親カテゴリーにエントリーがないと表示はされないのでしょうか。
予定としては、親カテゴリーにエントリーしないつもりなんですが。
>にうさん
こんにちは。
そちらでは小粋空間テンプレートをお使いですが、このテンプレートでは、ツリーにしない形でカテゴリー一覧を出力するようになっています。
ツリー表示にしたい場合、カテゴリー一覧出力部分の「全カテゴリー用」を削除して、「サブカテゴリー用」を生かすように書き換える必要があります。
お返事が遅くなり申し訳ございませんでした。
壱さんがおっしゃるとおり、全カテゴリーを削除しないでサブカテゴリーをいじってたせいで表示がされなかったようです。
度重なる初歩的な質問に答えていただき感謝しております。
本当にありがとうございます。
はじめまして、こんにちは。
こちらのプラグインを利用させて頂いております。
1点だけ質問なのですが、カテゴリー名の文字制限はどれくらいなのでしょうか。
0200000~と入れて行きタイトル表示の分まで入れると、文字制限に引っかかってしまいます。付けたいタイトルを短くすればいいのですが、制限に関係なくタイトルを付けたいと思います。設定ファイル等で変更すれば可能な事でしょうか?
御忙しい所申し訳御座いません、設定方法をご教授頂けましたら幸いです。
>デュオンさん
こんにちは。プラグインご利用ありがとうございます。
カテゴリー名の文字数ですが、MySQL/PostgreSQL/SQLiteを使っている場合、100バイトになっています。Berkeley DBは不明です。
phpMyAdmin等を使って長さの設定を書き換えれば、もっと長くできるかも知れませんが、保証はできません。
こんにちは。
とても使い勝手の良いプラグインをありがとうございます。
質問なのですが、
<$MTArchiveTitle$>
をつかっている箇所はどうすればよいのでしょうか?
ご教授お願いします。
>カズヲさん
こんにちは。プラグインご利用ありがとうございます。
MTArchiveTitleタグを使っている箇所も、MTCategoryLabelExタグに置き換えてください。
こんばんは
これも やってみました^^
MTCategoryLabelEx への置き換えがちょっと解らなかったけど
適当にやったら出来てるみたいです
ありがとうございました
>MELLさん
こんにちは。
導入されてから言うのも何ですが・・・。
MELLさんはMT3.31を導入されていますが、MT3.3ではカテゴリーの出力ファイル名を指定する機能があります。
したがって、MT3.3ならこのプラグインを使わなくても、cutfirstcharプラグインとMT3.3の機能を利用すれば、カテゴリーを並べ替えつつ、出力先も指定することができます。
そうなんですかーw
どっち使っていいか分からなくて
こっちを選んじゃいました
やり変えたほうがいいでしょうかねぇ
はじめまして、こんにちは。
こちらのプラグインを利用させて頂いております。
つい先日、こちらの”カテゴリーの並べ替え・改良版”プラグインを導入させていただいたのですが、
<$MTEntryCategory$>を<MTCategoryLabelEx>と書き換え再構築したところ、
「テンプレート「メインページ」の再構築に失敗しました: <MTEntries>タグでエラーが発生しました: <MTCategoryArchiveLink>タグでエラーが発生しました: <$MTCategoryArchiveLink$>タグが適切なコンテキスト外で使われました。
」
と、このようなエラーメッセージが出てタグを適用することが出来ません。また、<MTCategoryLabelEx>を<$MTCategoryLabelEx$>とこのように書き換えてみても同様のエラーメッセージが出てきます。
尚、<$MTArchiveTitle$>及び<MTCategoryLabel>は<MTCategoryLabelEx>に書き換えても問題なく適用されております。
問題なくエントリー内に<MTCategoryLabelEx>適用する方法・対処法等ございましたら、ご教授願います。
使用しているバージョンは3.34です。
宜しくお願いいたします。
>サイコロさん
こんにちは。
プラグインに不具合がありましたので、修正したバージョンをアップロードしなおしておきました。
http://www.h-fj.com/mt_plugin/CategoryLabelEx.pl
また、MTEntryCategoryタグは、「MTEntryCategoryEx」というタグに置き換えてください。
ただ、エラーメッセージの通りだとすると、MTCategoryArchiveLinkタグをMTEntriesタグのコンテナの中で使っていることがエラーの原因です。
ちなみに、MTCategoryArchiveLinkタグは、MTCategoriesタグ等のコンテナの中等で使うもので、MTEntriesタグの中で直接には使えません。
早急に対応して頂き、どうも有難うございます。
無事、適用することが出来ました。
上記のMTCategoryArchiveLinkですが、
試験的に入れていたタグを消去し忘れたため、出てきたものでした。
ご指摘、頂いて気づきました。
重ね重ね有難うございました。