- 2008-08-13 (水) 17:12
- MovableType


- identifierをどうにかしたい訳だが
いや~、また間があいちゃった。一応VOXで小ネタあげてるんだけどね。それでまだまだ続くテンプレートセットネタ。
Hackathonのマトメをみなさんやってくださってる訳ですね。で、私のネタ部分。
[Japan Hackathon Vol.3 参加レポート - Open MagicVox.net:(2008年8月13日 14:46:19)]関根さん作のTemplateSetを書き出すPlugin。ファイル名が気に入らない(笑)
勘違いされるとまずいので、解説しておくと、CHEEBOWさんのプラグインを問題にしている訳じゃない。
identifierを持ってないテンプレート(管理画面上で新規作成したテンプレートは基本的にこれ)を出力するときに、ファイル名を決める方法が無い。テンプレート名は2バイト文字が混ざるのが可能だし、HTMLタグを含んでも良いようだ(推奨はされないだろうけど)。かといって、出力中に、一つ一つファイル名を聞いてくるインターフェイスなんてありえない。
結果として自動的にファイル名が振られる訳です。プラグインの動作におかしな部分は無いのだ。
それでやっぱりテンプレートセットとして使うために、リネームは必要な訳ですよ。確かに出力後にファイル名を変えれば済むんだけど、config.yamlも同時に修正が必要だし、identifierを変えておけば、その必要もなくなると思う訳ですよね。
かといって毎度毎度、phpMyAdmin使ってidentifier修正するのも、おっくうじゃないですか。
それで思ったのが、「修正する手段を管理画面がもったらどうだろうか」という点。テンプレート編集画面に、identifierが表示されれば良いんだ。
という訳で、まずはalt_templateでチャレンジ。
alt_tmplの編集はJunnamaさんのサイトを参考にしてください。
今回修正するのは2つのテンプレート。
tmpl > cms > edit_template.tmpl(テンプレート編集画面)
tmp > cms > include > template_table.tmpl(テンプレート一覧画面)
ベースにしたのはMT4.2RC3~RC5、ただしMT4.1ベースでも同じように作成出来ました(挿入場所は変更したけど)。まだベータ段階だし、取りあえず版なのでファイルの配布は無しです。
edit_templateは「テンプレートの種類」を表示している部分の下に、コードを挿入する。実はidentifierは、すでに編集画面上に表示される(インデックステンプレートのみ)ようになっていて、編集保存可能なフィールドとして用意するだけだったりする。
探すコードは下記の出力ファイル名の部分<mt:if name="has_outfile">
<mtapp:setting
id="outfile"
label="<__trans phrase="Output File">"
help_page="templates"
help_section="output_file">
<div class="textarea-wrapper">
<input name="outfile" id="outfile" tabindex="4" value="<mt:var name="outfile" escape="html">" class="full-width" mt:watch-change="1" />
</div>
</mtapp:setting>
</mt:if>
そのすぐ後にこのコードを挿入する。
<mtapp:setting
id="identifier"
label="<__trans phrase="Identifier">">
<div class="textarea-wrapper">
<input name="identifier" id="identifier" tabindex="4" value="<mt:var name="identifier" escape="html">" class="full-width" mt:watch-change="1" />
</div>
</mtapp:setting>
これですべてのテンプレートで、identifierの表示が行われる。もちろん修正保存すれば、DBに反映される。プラグインなんか必要ないと思っている方は、これだけでもずいぶん便利なはず。実際自分でもプラグイン作る気が失せましたよ。
それで、なぜもう一つテンプレートいじっているのかと言うと、「テンプレート編集画面を開かないと、各identifierの設定が解らない。」というのが厭だったから。
template_table.tmplはテンプレートの一覧表示で使われるもの。なのでここに列を追加してやった。表示部分はテーブルで作られていて、その為タイトルと内容の2か所の追加になる。
まずはタイトル部分。
<mt:if name="template_type" eq="archive">
<th class="output-file"><__trans phrase="Archive Path"></th>
</mt:if>
<mt:unless name="blog_view">
<th class="blog"><__trans phrase="Blog"></th>
</mt:unless>
この2つの mt:if の間に、下の様に挿入する。
<mt:if name="template_type" eq="archive">
<th class="output-file"><__trans phrase="Archive Path"></th>
</mt:if>
<th class="ident"><__trans phrase="identifier"></th>
<mt:unless name="blog_view">
<th class="blog"><__trans phrase="Blog"></th>
</mt:unless>
次はデータ部分。
<mt:unless name="blog_view">
<td class="blog"><a href="<$mt:var name="script_url"$>?__mode=list&_type=template&blog_id=<$mt:var name="blog_id"$>"><$mt:var name="weblog_name" escape="html"$></a></td>
</mt:unless>
blog_view表示の手前にコードを挿入する。
<td class="ident"><$mt:var name="identifier" escape="html"$></td>
<mt:unless name="blog_view">
<td class="blog"><a href="<$mt:var name="script_url"$>?__mode=list&_type=template&blog_id=<$mt:var name="blog_id"$>"><$mt:var name="weblog_name" escape="html"$></a></td>
</mt:unless>
この表示は、個人的に結構気に入っている。
ほら、良い感じでしょ。ここでidentifier編集ってのも考えたけど、やっぱり表示だけにしときました。
ちなみに、ハッカソンで吉松さんにも指摘されたけど、identifierを修正できるというのは、案外危険かもという話。スタイルシートのstylesというidentifierを例にあげるまでもなく、MTの内部的にidentifierを使って、テンプレート指定している部分があるとの事。そこは注意が必要な訳ですね。
ここはMT自体でも、まだまだ進化していきそうな部分ですよね。MT4.2でウィジェットセットも扱える様になったみたいにね。
まだプラグイン作成に慣れていないので、完成にはもうしばらくかかると思うのですが、プラグイン化した暁には、出力ファイル名の修正のようにJavascriptの警告を出すようにするつもりです。特にシステム系のテンプレートの場合は注意を促すようにすれば、いいのではないかと思います。(だいたい欲張り過ぎなんだよね。)
- Newer >: 待ちに待ったMovableType4.2
- < Older: リメイク版バーバレラにジェシカアルバが!
ping a Trackback
- TrackBack URL for this entry.(1)
Comments:(5)
-
said
August 13, 2008 10:14 PM
|
ReplyThis!
こんばんわ^^
すばらしいですっ!!
わたしが秘かに求めていたものがここにありました。わたしのサイトで配布するテンプレートセットでも独自に identifier を割りあててます。identifier があるのとないのとでは便利さが格段に違います。
その点からも任意に設定/変更ができるのはとっても嬉しい機能です。これはぜひデフォルト機能として取り入れていただきたいですね。
長くなりましたがさっそく TRY してみます。
-
-
replied for
bzbell's comment
August 14, 2008 1:27 PM
|
ReplyThis!
こんにちわ^^
やってみました。バッチリです d(>∀< )
危険かも・・・とのことですが、MT デフォルトの identifier とブッキングしなきゃ問題ないという理解でいいですか!?
-
-
replied for
bzbell's comment
August 15, 2008 11:41 AM
|
ReplyThis!
>MT デフォルトの identifier とブッキングしなきゃ問題ないという理解でいいですか!?
えと認識的には、それで間違ってないと思います。
あと、元からあるidentifierの編集も可能なので、その場合も問題が発生する可能性があると思った方が良いみたいです。
例として内部的にstylesというidentifierを利用する部分がある事を挙げられてました。ゆっくりですけど、プラグイン化にも挑戦しますので、そちらも出来たらご意見ください。
-
-
-
said
August 14, 2008 12:45 AM
|
ReplyThis!
良いですねー(・∀・)
「ファイルへのリンク」にひとつひとつ書いて代用してました。
とても勉強になりました。-
-
replied for
arata's comment
August 15, 2008 11:50 AM
|
ReplyThis!
arataさん。
必要になるのは本当に限られた人なんでしょうが、その限られた人は幸せになりますよね。
自分が一番重宝しています。
-




スクリプトの読み込みが完了していません。
メールフォーム(Javascriptを使用していません)や、
Twitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。