MTOS4.2RC1:各ページの拡張子を得る
Movable Type Open Source(以下MTOSと略)4.2 RC1での実験。
恐らくMT4.1と変わらないと思うが(注:試したわけではないので知らない)。
この記事は、グローバルナビゲーションを作成するときなど、index.htmlやarchives.htmlのファイル名を、拡張子まで含めて正確に取得するときに、恐らく役立つ。ブログの設定にて出力ファイルの拡張子を変更(php化なんかでやる)した場合、テンプレート側で自動的に拡張子を変更する処理をテンプレートへ追加できる。
MT4.1においては、(私が記憶している限りでは)拡張子の設定は以下の3箇所に存在する。
- デザイン>インデックステンプレート>メインページ
- デザイン>インデックステンプレート>アーカイブインデックス
- 設定>公開>ファイルの拡張子
では、それぞれどうやって取得するのか?
以下のテストコード参考。なお、以下コードは、どこへ貼ってもコンテキストによる問題は発生しない。
メイン<$MTLink template="メインページ"$><MTIndexBasename extension="1"><br />
アーカイブ<$MTLink template="アーカイブインデックス"$><br />
拡張子<MTBlogFileExtension><br />
テストコードを貼ってみた
テストはMTOS4.2RC1で行っているが、MT4.1でも変わらんと思う。
メインhttp://www.apstars.com/blog/index.phpアーカイブhttp://www.apstars.com/blog/archives.php
拡張子.php
参考になるとこ
(※ちょっと調べる&解説書いている時間がないので、MTBlogFileExtensionについてだけ書く)
ContextHandlers.pm内に、「BlogFileExtension => \&_hdlr_blog_file_extension,」という記述がある。つまり
sub _hdlr_blog_file_extension {
my($ctx, $args, $cond) = @_;
my $blog = $ctx->stash('blog');
return '' unless $blog;
my $ext = $blog->file_extension || '';
$ext = '.' . $ext if $ext ne '';
$ext;
}
sub _hdlr_blog_file_extension関数に、処理内容が記述されている。
確認のためにPhpMyAdminでMySQLのDBを覗いてみる。blogテーブルのblog_file_extensionフィールドに、"html"というデータを発見。なお、このフィールド型と長さはvarchar(10)である。
追記
拡張子に関連するものでは、ほかにこういうタグもある。今回は割愛。貼ればわかると思う。
アーカイブファイルの設定は、<MTArchiveFile extension="1"><br />
アーカイブファイルの設定は(セパレータつき)、<MTArchiveFile extension="1" separator="-"><br />
エントリページの拡張子は、<MTBlogFileExtension><br />
ウェブページの拡張子は、<$MTPageBasename extension="1"$><br />
予告
テンプレートタグのみで、拡張子をクイックに取り出すコードを書く予定。呼び出しもとのコードは単にSetvarで変数名を指定するだけにし、再構築時の、呼ばれたときのみにMTSetVarTemplateで取得するようにすると、コンテキストの判断が必要になった場合でもMTSetVarTemplate内のみ一箇所で集中処理ができ(関数だからな)、全くエラーが出ないスマートなつくりにできるはず。
これはどういうことかというと、
- 再構築時にどのモジュールが先に処理されるかがわからないから、変数取得用のモジュールはMTSetVarBlockなどでは書けない。使うならMTSetVarTemplateだ
- 長ったらしいコードをいちいち書きたくないので、関数ちっくにMTSetVarTemplateで記述、使用するときのみ<MTSetVar name="FileExit">などとしてスマートに記述する
を狙っている。...あせって書いているので日本語が変だ。
- カテゴリ:212MT4.1実験室
トラックバック(0)
このブログ記事を参照しているブログ一覧: MTOS4.2RC1:各ページの拡張子を得る
このブログ記事に対するトラックバックURL:
- Categories
- Entries
-
- MT4分科会第2回勉強会に参加しました
- MTOS4.2RC1:各ページの拡張子を得る
- MTでAA
- MT4:MTの変数演算をプラグインで拡張
- MT4.1:「MT」という文字をテーブルの背景色で表現
- 「NabeAzzテンプレート問題・パート2」へ乗ってみる
- 作りたいプラグインの覚え書き
- 世界のナベアツをプラグインで表現
- MT4:世界のナベアツをテンプレートタグで表現(2)
- MT4.1:プラグインを書いてみよう
- MT4.1:予約変数の実験
- Movable Type 4.15 テスト中(1)
- mtde.info の、反省点
- mtde.info の、できる経緯
- MT4:前のエントリ・次のエントリのリンクをカテゴリごとに(条件あり)
- MT4:世界のナベアツをテンプレートタグで表現
- MT4.1:カテゴリ並べ替え・表示非表示切り替え(非プラグイン非カスタムフィールド)
- MT4.1:変数参照専用のモジュールの可能性
- MT4:XHTML+CSS素材テンプレート化の不具合修正・要望リスト
- MT4.1:Movable Type 4.1用テンプレート作った

コメントする