書くの遅すぎ!なんですけど、11月28日(土)新橋のファースト会議室で行われた
「第1回MT5勉強会」に参加してきました。
この勉強会、Twitterだったかmixiだったかたで知ったんですが、私が申し込みを
しようかと思ったときには、すでにキャンセル待ち寸前。
焦って、参加ボタンをポチし、それからオットに了解を取ったのでした。
(いつもは了解とってから参加ボタン)
どうしても行きたい!と思った勉強会でしたので、すごく楽しみにしていました。
当日のTwitterのハッシュは #mt5s1です。こちらにも少しつぶやいております。
内容については、私のより他の方のを読まれた方が分かりやすいかと思います。
私は
「Movable Type 5.0テーマの作り方」
というテーマのワーキンググループに参加しました。
テーマとはMT4でいうテンプレートセット、これをもっと簡単にしたものだそうです。
テーマに含まれるものは
- カスタムフィールド
- カテゴリ、フォルダ
- デザインテンプレート
- ウェブページ
- ファイル
の5つ。
ほかにも
- URLは必ず相対パスで記述。
- 他のブログのテンプレートをincludeしない。
- カテゴリー、フォルダ、カスタムフィールドをテンプレートで指定する場合には、エクスポート時に・忘れずにテーマに含める。
- プラグインに依存するMTタグを記述する場合は、テーマの説明などに注意書きを記述。
などの説明がセミナーでおこなわれ、ワークショップでは自分でテーマを作成となりました。
こちらの資料は
http://www.slideshare.net/goodpic/movable-type-5-how-to-create-themeにあります。

しかし、楽しみにしていたのにもかかわらず、ローカルにRCをインストールしていただけで
何もしていなかったし、正規版がでたのでインストールはし直しましたが、それっきり。
サーバーにインストールしたものに記事をふたつくらい書いただけの状況。
まず構造を理解することから始まりました。
通常、私はできあがったデザインをマークアップしてきますので、
デザインセンスのない私には配布できるようなテーマを作るのは難しすぎました(^^;
結局、テンプレートをいじるということで時間もかかり、色の変更程度のテーマしか
できませんでしたが、エクスポートして他のブログに適用したりと、作業のやり方に
ついては理解できました。
そうそう!
safariはサポートをしていないためか、テンプレートの動きがあまりよくありませんでした。
でも使えないわけではないので、ご安心を。
テーマを使うことによって、手順も楽になる部分もあり、活用していきたいと思いました。
(当日の発表では、たくさん作っても儲けたい〜とか言いましたw)
金子さんより、テーマはたくさん作って、配布してほしいとのことでした。
(元々、配布していくことを目的としているみたいです)
それによって、MTを使う方がもっと増えていくかもしれないからとのことです。
最後に、今回、この勉強会の企画を立ててくださり、写真も使わせてくださった蒲生さんを始め、six apartの方々やスタッフの方々には感謝します。
どうもありがとうございました。
このサイトの人気No.1は「
MT4 カスタムフィールドで日時を取得」なんですが、先日「
MovableType 備忘録」さんで「
GetDate プラグイン」という記事を読みました。
あのとき、これがあればあの記事を書くこともなかったでしょうけど、アレはアレで勉強になったと言うことで。
このプラグインがあれば、「
MT4 カスタムフィールドで日時を取得」で書いたような面倒なことはしなくても大丈夫です。
このブログは記事を投稿すると、Twitterにも通知されます。それを見た方から、こちらにコメントをしようと思ったけどできないとのお知らせ。
すぐに確認をして、管理画面の設定>コメントで「すべて自動的に公開する」に変更しても、解消されません。なんでだ!と思ってちょいと調べたら、ありました。
MT4でコメントを投稿できないときの解決策
ああ、よかった。
これでコメント受け付けられるようになりました。
<MTEntries>ではモディファイアにAND
, OR
, NOT
などを使った複雑なフィルタリングもできます。
これをMTSetVarBlockを使って、変数を定義して埋め込んだときにつまづいた部分。
<MTSetVarBlock name="Etag">
<MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags>
</MTSetVarBlock>
<MTEntries tags="$Etag">
<MTEntriesHeader><ul></MTEntriesHeader>
<li><a href="<MTEntryPermalink>"><MTEntrytitle></a></li>
<MTEntriesFooter></ul></MTEntriesFooter>
</MTEntries>
こんなソースを書いたんですが、タグが一つの時はうまくいく。
$Etagの部分に直接複数使って記述してもうまくいく。
なのになのに、上記のソースでは複数のタグがエラーになって再構築できない!
理由は簡単なところにありました。
<MTSetVarBlock name="Etag">
<MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags>
</MTSetVarBlock>
ここを
<MTSetVarBlock name="Etag"><MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags></MTSetVarBlock>
と修正したら直りました。つまり、改行をなくして、1行に書いたんです。リストの時に改行すると変な空白ができるのと一緒ですね。
焦りましたが気づいてよかったー。
イベントなどが終了したら表示を変えたい。よくあることです。
これを、php化したMT4でやってみました。
エントリー時に終了日時をあらかじめ入れておきます。
アクセスした時に、これを過ぎていれば終了と表示を出すことにします。
終了日時はカスタムフィールドで記入するようにします。
今回は時間はなしで、簡単に年月日だけで比較することにします。
設定を日付と時間にしたんですが、こうするとformat="%Y%m%dなどが効かないので、
表示は2008年8月15日というようになってしまうため、日付の比較ができません。
(実はこれがわからずかなり悩んだ)
テキストにして20080815などと入れてもらってもかまわないのですが
それじゃあんまりなので、ちょっと面倒ですがドロップダウンを使用しました。
年、月、日ごとにカスタムフィールドを設定します。
月日は全部二桁で01、02とします。
各フィールド名をDateY、DateM、DateDとします。
<?php
$enddate = ('<$MTDateY$><$MTDateM$><$MTDateD$>'); //申込終了日時を取得
$today = date(Ymd); // 今日の日付を取得
if( $enddate >= $today )
print <<< EOD
終了前に表示したい内容
ここはインデントしないで
ここはインデントしないで
EOD;
}
else {
{
print <<< EOD
終了後に表示したい内容
ここはインデントしないで
ここはインデントしないで
EOD;
}
?>
このような感じです。
一応説明をば。
$enddate = ('<$MTDateY$><$MTDateM$><$MTDateD$>');
$enddateという変数に終了の年月日を入れています。
終了年月日=20080815
$today = date(Ymd);
今日の日付をdate関数で取得しています。Ymdで年月日を取得
今日=20080817
if( $enddate >= $today )
20080815と20080817どちらが大きいかを比較しています。
この場合、今日の日付の方が大きいのでelse以下、つまり終了後の
内容を表示するということになります。
もし、終了日と今日の日付が同じ場合は終了後の表示になります。
同じ場合は終了前にしたいときは「>=」の部分を「>」だけにしてください。
表示したい内容が短いものの場合は
print <<< EOD
終了前に表示したい内容
ここはインデントしないで
ここはインデントしないで
EOD;
ここを
print "短い文章";
としてもOKです。
ちなみに「ここはインデントしないで」の理由などは
http://nyx.pu1.net/reference/basic/character.html
なんかを見るとわかりやすいと思います。
これであってるよな......と、心配で何度も読み返す。
自分への覚え書きとして。
MT4に新設されたカスタムフィールドですが、普通は
<MTIfNonEmpty tag="EntryData">
カスタムフィールドの名前: <MTEntryData>
</MTIfNonEmpty>
としますが、これだと、チェックボックスの場合は
チェックしていてもしなくても表示されてしまうのでどうしてだろうと思っていたら、
チェックボックスに関しては、チェックされている時「1」を表示し、
チェックされていないとき「0」を表示するんですね。
というわけで、
<MTIfNonZero tag="EntryData">
表示させたいもの
</MTIfNonZero>
となるわけです。
ちなみに、ラジオボタンやドロップダウンの場合はオプションが出るので
そこに項目を書いていけばいいのですが、チェックボックスの場合は
説明の部分に書いたことが、チェックボックスの横に表示されます。
カスタムフィールドを標準装備とな。
4になってからお仕事で作業したことはないんだけど、無性にここのテンプレートたちをいじり倒したくなりました。
昨日もそうなんですけど、久しぶりにやることって、年のせいか思い出せなくなってきています。
辞書片手に「ああ、そうそう。」なんて思い出したりして。(^^;
MTもさわらないと忘れてしまう。
びしばし作業したいけど、その前に申告書類作らなきゃです。
覚え書きです。
プラグインのArchivePageをつかってページ分割をする際にセパレーターをカスタマイズしたいとき。
MTArchivePagerに separator="区切り文字" といれてもできなかったのでplファイルを開いてみました。
ArchivePage.plをひらき、245行目付近
$res .= ',' if $res;
これの
','
を自分の好きなセパレーターにする。
今回私は数字を囲みたかったので
']['
として
[<$MTArchivePager$>]
と全体も囲みました。
これで
最初
[
1] [
2]
次のページ
最後
とできました。
WPからこっち(MT4)に移行しようとしていますが、なぜかインポートができないのです。
なので、仕方なく別に進めていこうと思います。
ブックマークしていただいた方はこちらに変更をお願いします。
こっちは初めてさわるのでデフォルト状態で手探りです。
少しずついじり倒していきたいと思います。