「最近の」言うなぁ!
MT のテンプレートを見ると、「最近の」ばか
りが存在します。
でも、ホントにそれで満足してますか?
昔のブログ記事の横にいる、「最近のタグ」に
違和感がありませんか?
ブログ記事に「あのころのタグ」を付ける事に
挑戦しま...
その前に・・・私について
● 小野崎直昭
● ハンドルは「 oscar 」
● でも外人さんにはよくある名前なので、サー
ビスで ID 取るのに苦労してます。
● おかげで、 Twitter では「 naoaki011 」と
いう ID になっ...
さらに私について
● アムロ・レイと同い年です
● というのも、「機動戦士ガンダム」が放映さ
れてた頃、16歳でした
● ですので、経歴に「1年戦争従軍経験あり」
と書く時があります
● 漢ならザクでしょう
そのまた私について
● つい最近まで、プリプレスの会社で DTP 関
係のお仕事してました
● もっとも DTP 自体よりは、サーバーいじっ
たり、回線セットアップしたりが多かったで
すが
● 現在無職です
● 誰か雇ってください
しつこく私について
● Movable Type が大好きです
● 忘れられてますが「 Movable Type プロ
フェッショナル・スタイル」の著者の一人で
す
● 座右の銘「 Movable Type はオレの嫁」
● 特にプラグインが大...
ブログやってます
● WolaWola  オラオラと読みます
● http://www.zelazny.mydns.jp/
● Movable Type 個人ブロガーライセンスで
す
● 無謀にも Beta2 で MT5 に切り替えました
● ...
最近のヒットエントリー
MT5 ・プラグインの皆さん動いてますか
プラグインをひたすら動作
確認したエントリーです
続編も書きました
他には・・・
● 日本以外で公開された便利なプラグインを紹
介する事が多いです
● 「 Template Shelf 」
● 「 Asset Handler 」
● 「 Better File Uploader 」
● 「 Comment Su...
アクションストリームプラグイン作
りました
● 「二卍 ActionStream Plugin 」
● 「 Tumblr ActionStream Plugin 」
● 「ブクログ ActionStream Plugin 」
● 「 Niche...
最近はテーマ作ってます
● mt.Vicuna を作ってます
– http://mt.vicuna.jp
● 現在次の構想
について、市瀬さんと打ち合わせ中です
他にもテーマ作ってます
他人のテンプレートセットからのテーマ化です
プラグインも作ってみてます
● 未公開ですが、プラグインも作ってみてます
● 「 bit.ly Plugin 」 URL を bit.ly で短縮・伸
張するモディファイアプラグインです
● もともとは、日本のアマゾンの商品の URL
を、アイ...
他人のプラグインを改造してます
● プラグインを MT5 で動くように修正してみ
てます
● 「 Asset Handler 」
● 「 GoogleSitemapPing 」
● 「 Comment Subscribe 」
● 自分に自信が無...
という訳でやっと本題
● それは「第 2 回 Movable Type Developer
Conference 」から始まった・・・
● 一昨年の夏、行われた MTDC Tokyo での
LT の中で、伊藤 のりゆき( NORI )さんが
発...
●MTEntryPrevious によるネスト
<MTEntryTitle><MTEntryBody>
<MTEntryPrevious>
<MTEntryTitle><MTEntryBody>
<MTEntryPrevious>
<MTEnt...
MTSetVarTemplate が気になる
● 他には・・・
● MTSetVarTemplate というのが、追加され
たのだけれど、うまい使い方はないだろうか
● 関数呼び出しのように使うタグっぽい
● 使い方が解らないのではなく、使いど...
Mixi フォーラムの素人質問
● とんでも無いことを考えてて、見ているだけ
でも面白い
● 「古いエントリーに表示されているタグが、
再構築したら最近のタグになってしまった」
というのがあった
● それは仕様です
● 大体 MT のテンプレー...
という訳で・・・
● エントリーを基準として、過去 15 エント
リーに付けられたタグを、タグの付けられた
数順で、 30 個表示するタグクラウドという
のを考えてみた
● 普通に考えればこういうタグがあればいい
<MTEntries id=”...
●MTSetVarTemplate があるじゃないか
● でも 15 回も MTEntryPrevious 書くのやだ
● そうだ、あれ使ったらどうだろう
● MTSetVarTemplate タグ
● MTEntryPrevious を MT...
とりあえずこんなの考えた
<MTSetVarTemplate name="PreviusEntryTag">
<MTEntryPrevious>
<MTEntryTags>
<$MTTagName setvar="tagname"$>
<MTS...
でもこれじゃ1エントリー限り
● でも、このコードだとネストして呼び出しさ
れない
● そうか、 MTSetVarTemplate の中で、呼び
出せば・・・
● ん?・・・自分自身を呼び出せるのか?
● まずは、コードコード
内部で自分を呼び出し
<MTSetVarTemplate name="PreviusEntryTag">
<MTEntryPrevious>
<MTEntryTags>
<$MTTagName setvar="tagname"$>
<MTSet...
無限ループ地獄
● でも、よくよく考えたら、これじゃ無限ルー
プするんじゃないか
● 1番最初のエントリーまで、エントリーを遡
り続けるんじゃないのか・・・
● MTFor とかで呼び出しているんじゃないの
で、回数指定出来ないし
● しょうが...
カウンターを追加
<$MTSetVar name="i" value="15"$>
<MTSetVarTemplate name="PreviusEntryTag">
<MTEntryPrevious>
<MTEntryTags>
<$MTTa...
コイツ動くぞ!
● よし、書いたから再構築だ!
● どうせ自鯖だから、やばくなったら電源切れ
ばどうにかなる!
● ポチッ
● えっ、ちゃんと終了した・・・
● うそっ・・・
● コッ・・コイツ、動くぞ!
件数をコントロールして無い
● あっ、そういえば件数のコントロールして無
い
● 件数のハッシュ追加するとして・・・
● MTLoop 出力時にソートさせて
__counter__ で切り落とすと・・・
● そうか、件数順で並んじゃうの、やだな...
余分なタグを削除
● つまり30位以下の方々に消えてもらえば良
いんだ
● そういえばハッシュの要素を削除する方法
あったよね
● 一度 MTLoop で件数順に呼び出して、30
位以下の要素を削除すればいいんだ
● そうすれば、もとのハッシュ...
削除できました
● 出現回数のハッシュを使って・・・
<MTLoop name="cloudcount" sort_by="value numeric reverse">
<MTIf name="__counter__" gt="30"><MT...
自分のタグを足してなかった
● そうか、自分自身のタグを追加して無い
● 一番最初に、そのエントリーのタグを追加し
た
● 再構築
完成!
● 今再構築しても、当時のタグが表示されます
● コード全部だと長すぎるので、掲載はしませ
何か中途半端な内容です
● こんなこともあろうかと
● 小ネタを用意しておきました
条件タグをコンテナにする
● 条件タグの判断が常に「真」である場合に
は、条件タグがまるでコンテナタグのように
動作します
● <MTUnless></MTUnless>
● 上は判断条件が存在しないので、常に「偽」
になりますが、 Unles...
プラグインの有る無しをテンプレートで
判断
● プラグインによるタグの出力は、そのプラグ
インが有効な(コンテキスト)では、変数と
して扱えます
● プラグインによるファンクションタグを
MTIf することで、プラグインの有り無しが
判断できま...
キーワードの重複回避
● メタタグのキーワードにカテゴリーとタグの
両方を使ったうえで重複回避する
<mt:sethashvar name="keywords">
<mt:EntryCategories><mt:setvar name="<$m...
こうして欲しい MT5
● ウェブサイト作成とブログ作成が、一連の動
作で可能になるようにして欲しい
単純にウェブサイト X 1とブログ X 1の環境なら
ば流れで作成可能だと解りやすい
● やっぱり、アクションストリームとモーショ
ンには、復...
MT5 のなんで?
● アイテム出力に square モディファイアと
width または height モディファイアを指定
し、 75 ピクセルと指定すると、四角くなく
なるのは
             なんで?
● テーマのウェブページ...
MT5 のなんで 2 ?
● ブログ作成時にテーマの Require 情報が無
視されるのは
             なんで?
● スタイルキャッチャーの CSS 内の
developer と developer_url がどこにも表
示され...
終わりです
● 以上です
● 見ていただいてありがとうございました
Upcoming SlideShare
Loading in …5
×

Mtddc Tokyo Lt2010 oscar

3,331 views

Published on

MTDDCでLightningTalkスライドです

Published in: Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,331
On SlideShare
0
From Embeds
0
Number of Embeds
230
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Mtddc Tokyo Lt2010 oscar

  1. 1. 「最近の」言うなぁ! MT のテンプレートを見ると、「最近の」ばか りが存在します。 でも、ホントにそれで満足してますか? 昔のブログ記事の横にいる、「最近のタグ」に 違和感がありませんか? ブログ記事に「あのころのタグ」を付ける事に 挑戦しました。 MTDDC Tokyo 2010 2010 年 2 月 5 日 小野崎直昭  /HAndle oscar
  2. 2. その前に・・・私について ● 小野崎直昭 ● ハンドルは「 oscar 」 ● でも外人さんにはよくある名前なので、サー ビスで ID 取るのに苦労してます。 ● おかげで、 Twitter では「 naoaki011 」と いう ID になってます ● 読みは「オスカー」でも「オスカル」でも、 お好きな様にお読みください。
  3. 3. さらに私について ● アムロ・レイと同い年です ● というのも、「機動戦士ガンダム」が放映さ れてた頃、16歳でした ● ですので、経歴に「1年戦争従軍経験あり」 と書く時があります ● 漢ならザクでしょう
  4. 4. そのまた私について ● つい最近まで、プリプレスの会社で DTP 関 係のお仕事してました ● もっとも DTP 自体よりは、サーバーいじっ たり、回線セットアップしたりが多かったで すが ● 現在無職です ● 誰か雇ってください
  5. 5. しつこく私について ● Movable Type が大好きです ● 忘れられてますが「 Movable Type プロ フェッショナル・スタイル」の著者の一人で す ● 座右の銘「 Movable Type はオレの嫁」 ● 特にプラグインが大好きです ● 強度のプラグイン依存症(プラ中)です ● アクションストリームとテーマに萌えます
  6. 6. ブログやってます ● WolaWola  オラオラと読みます ● http://www.zelazny.mydns.jp/ ● Movable Type 個人ブロガーライセンスで す ● 無謀にも Beta2 で MT5 に切り替えました ● RC1 が Beta4 と表示されるのに気づいたの は私です ● 自宅にサーバー置いてます ● 使い古しの Windows マシンで時々暴走しま す
  7. 7. 最近のヒットエントリー MT5 ・プラグインの皆さん動いてますか プラグインをひたすら動作 確認したエントリーです 続編も書きました
  8. 8. 他には・・・ ● 日本以外で公開された便利なプラグインを紹 介する事が多いです ● 「 Template Shelf 」 ● 「 Asset Handler 」 ● 「 Better File Uploader 」 ● 「 Comment Subscribe 」 ● 「 Link Roller 」 などなど・・・
  9. 9. アクションストリームプラグイン作 りました ● 「二卍 ActionStream Plugin 」 ● 「 Tumblr ActionStream Plugin 」 ● 「ブクログ ActionStream Plugin 」 ● 「 NicheActions Plugin 」 最近では ● 「 MTQ ActionStream Plugin 」 作ってみているのが ● 「 foursquare Action Plugin 」
  10. 10. 最近はテーマ作ってます ● mt.Vicuna を作ってます – http://mt.vicuna.jp ● 現在次の構想 について、市瀬さんと打ち合わせ中です
  11. 11. 他にもテーマ作ってます 他人のテンプレートセットからのテーマ化です
  12. 12. プラグインも作ってみてます ● 未公開ですが、プラグインも作ってみてます ● 「 bit.ly Plugin 」 URL を bit.ly で短縮・伸 張するモディファイアプラグインです ● もともとは、日本のアマゾンの商品の URL を、アイテムの URL フィールドにぶち込み たくて作りました ● モジュール依存なので、書き換え予定です
  13. 13. 他人のプラグインを改造してます ● プラグインを MT5 で動くように修正してみ てます ● 「 Asset Handler 」 ● 「 GoogleSitemapPing 」 ● 「 Comment Subscribe 」 ● 自分に自信が無いので、おおっぴらに公開は してません
  14. 14. という訳でやっと本題 ● それは「第 2 回 Movable Type Developer Conference 」から始まった・・・ ● 一昨年の夏、行われた MTDC Tokyo での LT の中で、伊藤 のりゆき( NORI )さんが 発表した「テンプレートだけでつくるページ 分割」の、 MTEntryPrevious によるネスト に衝撃を受けた・・・
  15. 15. ●MTEntryPrevious によるネスト <MTEntryTitle><MTEntryBody> <MTEntryPrevious> <MTEntryTitle><MTEntryBody> <MTEntryPrevious> <MTEntryTitle><MTEntryBody> <MTEntryPrevious> <MTEntryTitle><MTEntryBody> <MTEntryPrevious> こういうやつ
  16. 16. MTSetVarTemplate が気になる ● 他には・・・ ● MTSetVarTemplate というのが、追加され たのだけれど、うまい使い方はないだろうか ● 関数呼び出しのように使うタグっぽい ● 使い方が解らないのではなく、使いどころが 解らない珍しい MT タグだ ● という土壌がありました
  17. 17. Mixi フォーラムの素人質問 ● とんでも無いことを考えてて、見ているだけ でも面白い ● 「古いエントリーに表示されているタグが、 再構築したら最近のタグになってしまった」 というのがあった ● それは仕様です ● 大体 MT のテンプレートに「最近の」が多す ぎ ● でも、そのアイデア面白いのでいただきます
  18. 18. という訳で・・・ ● エントリーを基準として、過去 15 エント リーに付けられたタグを、タグの付けられた 数順で、 30 個表示するタグクラウドという のを考えてみた ● 普通に考えればこういうタグがあればいい <MTEntries id=”xx” lastn=”15”> ● でも、そんなタグは無い し、 MTEntryPrevious でネストしたかった ので、考えてみた
  19. 19. ●MTSetVarTemplate があるじゃないか ● でも 15 回も MTEntryPrevious 書くのやだ ● そうだ、あれ使ったらどうだろう ● MTSetVarTemplate タグ ● MTEntryPrevious を MTSetVarTemplate して MTFor とかで 15 回呼び出せばいいん だ ● 書いてみよう
  20. 20. とりあえずこんなの考えた <MTSetVarTemplate name="PreviusEntryTag"> <MTEntryPrevious> <MTEntryTags> <$MTTagName setvar="tagname"$> <MTSetVarBlock name="tagcloud{$tagname}"> <a href="<$MTBlogURL$>tag/<$MTTagName$>"><$MTTagName escape="html"$></a> </MTSetVarBlock> </MTEntryTags> </MTEntryPrevious> </MTSetVarTemplate>
  21. 21. でもこれじゃ1エントリー限り ● でも、このコードだとネストして呼び出しさ れない ● そうか、 MTSetVarTemplate の中で、呼び 出せば・・・ ● ん?・・・自分自身を呼び出せるのか? ● まずは、コードコード
  22. 22. 内部で自分を呼び出し <MTSetVarTemplate name="PreviusEntryTag"> <MTEntryPrevious> <MTEntryTags> <$MTTagName setvar="tagname"$> <MTSetVarBlock name="tagcloud{$tagname}"> <a href="<$MTBlogURL$>tag/<$MTTagName$>"><$MTTagName escape="html"$></a> </MTSetVarBlock> </MTEntryTags> <$MTVar name=”PreviousEntryTag”$> </MTEntryPrevious> </MTSetVarTemplate>
  23. 23. 無限ループ地獄 ● でも、よくよく考えたら、これじゃ無限ルー プするんじゃないか ● 1番最初のエントリーまで、エントリーを遡 り続けるんじゃないのか・・・ ● MTFor とかで呼び出しているんじゃないの で、回数指定出来ないし ● しょうがないので、カウンター変数作って、 そいつで条件分岐
  24. 24. カウンターを追加 <$MTSetVar name="i" value="15"$> <MTSetVarTemplate name="PreviusEntryTag"> <MTEntryPrevious> <MTEntryTags> <$MTTagName setvar="tagname"$> <MTSetVarBlock name="tagcloud{$tagname}"> <a href="<$MTBlogURL$>tag/<$MTTagName$>"><$MTTagName escape="html"$></a> </MTSetVarBlock> </MTEntryTags> <MTSetVar name="i" op="--"> <MTIf name="i" gt="0"><$MTVar name=”PreviousEntryTag”$></MTIf> </MTEntryPrevious> </MTSetVarTemplate>
  25. 25. コイツ動くぞ! ● よし、書いたから再構築だ! ● どうせ自鯖だから、やばくなったら電源切れ ばどうにかなる! ● ポチッ ● えっ、ちゃんと終了した・・・ ● うそっ・・・ ● コッ・・コイツ、動くぞ!
  26. 26. 件数をコントロールして無い ● あっ、そういえば件数のコントロールして無 い ● 件数のハッシュ追加するとして・・・ ● MTLoop 出力時にソートさせて __counter__ で切り落とすと・・・ ● そうか、件数順で並んじゃうの、やだな ● どうにか、出現順に並ばないかな? ・ ・ ● あ、もともとは出現順じゃね!
  27. 27. 余分なタグを削除 ● つまり30位以下の方々に消えてもらえば良 いんだ ● そういえばハッシュの要素を削除する方法 あったよね ● 一度 MTLoop で件数順に呼び出して、30 位以下の要素を削除すればいいんだ ● そうすれば、もとのハッシュは出現順に並ん でいるけど、要素は出現頻度で Top30 にな る ● よし、コードコード・・・
  28. 28. 削除できました ● 出現回数のハッシュを使って・・・ <MTLoop name="cloudcount" sort_by="value numeric reverse"> <MTIf name="__counter__" gt="30"><MTSetVar name="delete(cloudcount)" key="$__key__"></MTIf> </MTLoop> ● これで削除できる ● よしうまくいった・・・ ・ ● あれ?最初のエントリーにタグが表示されな い?
  29. 29. 自分のタグを足してなかった ● そうか、自分自身のタグを追加して無い ● 一番最初に、そのエントリーのタグを追加し た ● 再構築 完成! ● 今再構築しても、当時のタグが表示されます ● コード全部だと長すぎるので、掲載はしませ
  30. 30. 何か中途半端な内容です ● こんなこともあろうかと ● 小ネタを用意しておきました
  31. 31. 条件タグをコンテナにする ● 条件タグの判断が常に「真」である場合に は、条件タグがまるでコンテナタグのように 動作します ● <MTUnless></MTUnless> ● 上は判断条件が存在しないので、常に「偽」 になりますが、 Unless なので常に「真」で す ● これにモディファイアを追加すると、内部に 対してモディファイアが適用できます ● <MTUnless regex_replace="/s*n+/g","n"> ● 内部の空行を削除します
  32. 32. プラグインの有る無しをテンプレートで 判断 ● プラグインによるタグの出力は、そのプラグ インが有効な(コンテキスト)では、変数と して扱えます ● プラグインによるファンクションタグを MTIf することで、プラグインの有り無しが 判断できます ● <MTIf tag="ActionStreams"></MTIf> ● 上のタグだと、アクションストリームプラグ インがインストールされているかどうかで条 件分岐が可能です ● なぜか、ブロックタグでも大丈夫でした
  33. 33. キーワードの重複回避 ● メタタグのキーワードにカテゴリーとタグの 両方を使ったうえで重複回避する <mt:sethashvar name="keywords"> <mt:EntryCategories><mt:setvar name="<$mt:CategoryLabel>" value="1"></mt:EntryCategories> <mt:EntryTags><mt:setvar name="<$mt:TagName>" value="1"></mt:EntryTags> </mt:sethashvar> <meta name="keywords" content="<mt:Loop name="keywords" glue=" ,"><$mt:Var name="__key__"$></mt:Loop>" /> ● 同じ手で、アーカイブ内のキーワードを、内 包するエントリーのタグやカテゴリーから作 成可能です
  34. 34. こうして欲しい MT5 ● ウェブサイト作成とブログ作成が、一連の動 作で可能になるようにして欲しい 単純にウェブサイト X 1とブログ X 1の環境なら ば流れで作成可能だと解りやすい ● やっぱり、アクションストリームとモーショ ンには、復活してもらいたいなぁ
  35. 35. MT5 のなんで? ● アイテム出力に square モディファイアと width または height モディファイアを指定 し、 75 ピクセルと指定すると、四角くなく なるのは              なんで? ● テーマのウェブページインポーターで、ベー スネーム指定しても、識別子を見てしまうの は              なんで?
  36. 36. MT5 のなんで 2 ? ● ブログ作成時にテーマの Require 情報が無 視されるのは              なんで? ● スタイルキャッチャーの CSS 内の developer と developer_url がどこにも表 示されないのは              なんで?
  37. 37. 終わりです ● 以上です ● 見ていただいてありがとうございました

×