「WebSig24/7 MT4分科会 第1回イベント」のまとめ
2007年10月13日(土)、 CG-ARTS協会にて開催された「WebSig24/7 MT4分科会 第1回イベント」に参加しました。
■第一部
MovableTypeを触っている人のバイブル「小粋空間」のyujiroさんのおはなし。ブログ同様、とても丁寧でやさしい雰囲気の方で、その繊細さはスライドにも垣間見ることができました。
MT4では、MTIf、MTSetvar、MTSetvarblockをうまく利用し、テンプレートの上部にセットされる変数にて、各テンプレートでの動作や役割が振り分けされています。
が、entry_templateのように、テンプレートに表示されない変数があるとのこと。
ではそれはどこで設定されているのか?
答えは、lib/MT/WeblogPublisher.pmで初期設定されているとのこと。
こういうのが他にもたくさんあるそうで、これを組み合わせるとデフォルトの設定値を使ってケースを振り分けることができるようです。
(yujiroさんが一覧表にされていました。)
恥ずかしながら、MT3からあるMTIgnoreタグを知りませんでした。コメントにを使っていました。MT4でタグが増えたというのに、まだまだ知らないタグがありそう。見直さねば。
また、MTSubFoldersの存在意義は、今後、フォルダアーカイブが実装された時に有効になるのでは?とのことでした。
資料も膨大な量であったにも明瞭にまとめられており、大変わかりやすい説明でした。ありがとうございました。
■第二部
第二部は、グループに分かれてのワークショップで、わたしはjunnamaさんチームで「各自で解決したい内容に取り組んでみよう!」ということで、お題として用意していったブログ記事でのカテゴリーの表示について取り組みました。
方法はいろいろあると思うのですが、スマートで汎用的なものをテンプレートタグで実現できないか、試してみたかったのです。
で、結果はというと、タイムアウト・・・。
でも、せっかくMTIf、MTSetvarblockが使えるのだから、どこまでできるかやってみました。
【ブログ記事内で、トップから自分の属するカテゴリーまで階層的に表示させる】
<mt:setvarblock name="topcategory">
<mt:topLevelParent><mt:Categorylabel></mt:topLevelParent>
</mt:setvarblock>
<mt:setVarBlock name="entrycategory">
<mt:entryCategory>
</mt:setVarBlock>
<mt:toplevelcategories>
<mt:subCatIsFirst><ul></mt:subCatIsFirst>
<mt:setvarblock name="parentcategory">
<mt:topLevelParent><mt:Categorylabel></mt:topLevelParent>
</mt:setvarblock>
<mt:if name="topcategory" eq="$parentcategory">
<li><a href="<mt:categoryArchiveLink>"><mt:categorylabel></a>
<mt:setVarBlock name="thiscategory">
<mt:Categorylabel>
</mt:setVarBlock>
<mt:if name="thiscategory" eq="$entrycategory">
<mt:entries>
<mt:entriesHeader><ul></mt:entriesHeader>
<li><a href="<mt:entrypermalink>"><mt:entryTitle></a></li>
<mt:entriesFooter></ul></mt:entriesFooter>
</mt:entries>
</mt:if>
<mt:subCatsRecurse></li>
<mt:else>
</mt:if>
<mt:subCatIsLast></ul></mt:subCatIsLast>
</mt:toplevelcategories>
- topcategory・・・ブログ記事の属するカテゴリーのトップレベルの親カテゴリー
- parentcategory・・・トップレベルのカテゴリー
- entrycategory・・・エントリーの属するカテゴリー
- thiscategory・・・対象カテゴリー
- topcategoryとparentcategoryを一致するときだけ、トップレベルの親カテゴリを表示する。
- entrycategoryとthiscategoryが一致するときだけ、ブログ記事一覧を表示する。
あるカテゴリー以下を階層表示する方法ってないのかな?
<MTEntries category="hoge">みたいに、
<MTTopLevelCategories>や<MTSubCategories>にもカテゴリーを指定できるモディファイアがあったりしたらよかったんだけど・・・
あと、これができたら以前Movable Type 4 Hack-a-thonでのお題を考えるときに、cremaさんと話していた「サイドメニューとかでアコーディオン形式で表示したいですね?」とお話していたのを思い出しました。
cremaさんは「ブログ記事内で、同一カテゴリーに属するエントリ一覧のリストを出力する」を完成させてくださったので、サブカテゴリーがある場合はどうだろう?と実験してみることに。
【ブログ記事内で、同一カテゴリーに属するエントリ一覧のリストを出力する(サブカテゴリ版)】
<mt:setvarblock name="topcategory">
<mt:topLevelParent><mt:Categorylabel></mt:topLevelParent>
</mt:setvarblock>
<mt:setVarBlock name="entrycategory">
<mt:entryCategory>
</mt:setVarBlock>
<mt:toplevelcategories>
<mt:subCatIsFirst><ul></mt:subCatIsFirst>
<mt:setvarblock name="parentcategory">
<mt:topLevelParent><mt:Categorylabel></mt:topLevelParent>
</mt:setvarblock>
<mt:if name="topcategory" eq="$parentcategory">
<mt:IfIsAncestor child="$entrycategory">
<li><a href="<mt:categoryArchiveLink>"><mt:categorylabel></a>
<mt:setVarBlock name="thiscategory"><mt:Categorylabel></mt:setVarBlock>
<mt:if name="thiscategory" eq="$entrycategory">
<mt:entries>
<mt:entriesHeader><ul></mt:entriesHeader>
<li><a href="<mt:entrypermalink>"><mt:entryTitle></a></li>
<mt:entriesFooter></ul></mt:entriesFooter>
</mt:entries>
</mt:if>
<mt:subCatsRecurse>
</li>
<mt:else>
<li><a href="<mt:categoryArchiveLink>"><mt:categorylabel></a></li>
</mt:IfIsAncestor>
<mt:else>
<li><a href="<mt:categoryArchiveLink>"><mt:categorylabel></a></li>
</mt:if>
<mt:subCatIsLast></ul></mt:subCatIsLast>
</mt:toplevelcategories>
- topcategoryとparentcategoryを一致するときだけ、トップレベルの親カテゴリを判定する。
- MTIfIsAncestorタグにて、entrycategoryをサブカテゴリとして含むカテゴリかを判定する。
- entrycategoryとthiscategoryが一致するときだけ、ブログ記事一覧を表示する。
- あとは、上記にあてはまらないカテゴリの表示を調整する。
常にブログ記事の属する部分だけが開いていく感じにしたかったので、
MTIfIsAncestorタグを初めて使ってみました。
実際にどんな感じで表示されるかというと、
【例1)「さんまの塩焼き」のブログ記事でのカテゴリー表示】
(「洋食」、「和食」、「中華」がトップカテゴリー/「前菜」、「主食」、「汁物」がサブカテゴリーの場合)
- 洋食
- 和食
- 前菜
- 主食
- さんまの塩焼き
- 肉じゃが
- 汁物
- 中華
この場合はエントリーの属するカテゴリーと同階層の他のカテゴリー(ここでいうと「前菜」、「汁物」)が表示されます。
が、しかし・・・
【例2)「さんまの塩焼き」のブログ記事でのカテゴリー表示】
(「洋食」、「和食」、「中華」がトップカテゴリー/「前菜」、「主食」、「汁物」がサブカテゴリー1/「魚」、「肉」、「野菜」がサブカテゴリー2)
- 洋食
- 和食
- 前菜
- 主食
- 魚
- さんまの塩焼き
- ぶりの照り焼き
- 肉
- 野菜
- 魚
- 汁物
- 中華
この場合は、階層がもう一つ増えると、ひとつ上の階層の「前菜」、「汁物」までが表示されてしまうのです。
というのも、MTIfIsAncestorタグを使ったがゆえに、現在のカテゴリが指定したカテゴリ(child="hoge"のモディファイア)をサブカテゴリとして含んでいるか判定するためですね。
これがタグでの限界なのか、なにかいい方法があるのかなぁ。
第一にわたしの力不足の感がありますが.、もう少し考えてみます。
■最後に
Dakinyさん、もでっちさんはじめ、スタッフのみなさま、ありがとうございました。
また、参加されたみなさんにたくさんの刺激をうけました。
ということで、やっとこさブログをたちあげてしまいました。
トラックバック(1)
このブログ記事を参照しているブログ一覧: 「WebSig24/7 MT4分科会 第1回イベント」のまとめ
このブログ記事に対するトラックバックURL: http://www.arearea.org/mt/mt-tb.cgi/1
参加者全員が満足するイベントは困難であるが、主催者は全員に満足して帰ってもらう努力はしなきゃいけないと思う WebSig24/7MT4分科会 第1回イベ... 続きを読む

コメントする