June 2009 Archives

June 18, 2009

config.yamlで良くある$Foo::Bar::buzの謎を探る。

「$pkg = '$Core::MT::CMS::'」と宣言されているから、 「${pkg}Dashboard::dashboard」というのは「$Core::MT::CMS::Dashboard::dashboard」 のことだと思う。

で、この「$Core」というのが何なのかわからない。

カレントのComponentをFooにセットしてから、Bar::buzを実行してくれ、という意味になります。
上の例で言えば、カレントのComponentとして'Core'を設定した上で、MT::CMS::Dashboardパッケージのdashboardメソッドを実行しろ、ということです。

Continue reading config.yamlで良くある$Foo::Bar::buzの謎を探る。.

June 10, 2009

ActionStreamのlinkフィールドからサムネイルをでっちあげる。

久しぶりの更新。テンプレート系のコネタです。
ActionStreamsのいくつかのプラグインでは、別途ThumbnailのURLを取得して専用のフィールドに保存してくれますが、そうではない場合もあります。
特にソーシャルブックマーク等のサービスの場合には、そもそもコンテンツとそのサムネイルの関係が事前に分からないため、何もしてくれません。
でもまあ、自分の行動範囲で、URLからサムネイル画像のURLが推測できる範囲なら何とかなるんじゃないか。
そこで、MTMLで無理矢理やっつけてみました。

まず、以下のようなテンプレートを、モジュールテンプレートとして作成します。
前半のmt:setHashVarタグのなかに適当に正規表現をつっこむと対応サイトが増やせます。とりあえずyoutubeとniconico、amazonだけ作りました。検証してないので、取りこぼしや誤作動があるかもしれません。

<mt:setHashVar urls>
<mt:setvar youtube  value="http\://[^\.\/]+\.youtube\.(jp|com)/watch\?v=([0-9a-zA-Z\-]{11})","http://img.youtube.com/vi/$2/default.jpg" />
<mt:setvar niconico value="^http\://www\.nicovideo\.jp/watch/[sn]m([0-9]{1,9})","http://tn-skr2.smilevideo.jp/smile?i=$1" />
<mt:setvar amazon   value="^http\://www\.amazon\.(?:co\.jp|com)/.*(?:ASIN|product-description|product|dp)/([^/]+)(?:/.*)*","http://images.amazon.com/images/P/$1.09._THUMBZZZ_.jpg" />
</mt:setHashVar>
<mt:loop urls>
<mt:setVarBlock check><mt:getVar var="__value__[0]"></mt:setVarBlock>
<mt:setVarBlock pattern>/<mt:getVar var="__value__[0]">/</mt:setVarBlock>
<mt:setVarBlock replace><mt:getVar var="__value__[1]"></mt:setVarBlock>
<mt:if url like="$check"><mt:var url regex_replace="$pattern","$replace"></mt:if>
</mt:loop>

上のを保存したら(仮に「URL2Image」という名前で保存したとします)、ActionStreamsの表示側で、次のようにインクルードします。
変換対象となるURLを、モディファイアのように渡してください。

<mt:if tag="StreamActionThumbnailURL">
    <mt:StreamActionThumbnailURL />
<mt:else>
    <mt:setvarblock name="link"><mt:StreamActionURL /></mt:setvarblock>
    <mt:setvarblock name="thumb"><mt:include module="URL2Image" url="$link" trim="1" /></mt:setvarblock>
    <mt:if thumb><img src="<mt:var name="thumb" />" /></mt:if>
</mt:if>


このブログのメインページに表示しているライフログでも、Youtubeのビデオのブックマークなんかで画像が表示されるようにしてあるので、参考にしてみてください。

今回は、画像のみに絞ったカスタマイズにしましたが、やり方によってはembedタグにしたりアフィリエイトリンクにしたり色々出来ると思います。もちろんActionStreams以外の色々にも利用できると思います。お好みで工夫してみてください。

変換後のURLの前後に半角スペースが混じるとの指摘をいただきましたので、呼び出し側でtrimモディファイアを追加する形で対応しました。
<mt:include module="URL2Image" url="$link" trim="1" />
また、hvc-001さんにご指摘いただき、ニコニコ動画用の正規表現を一部修正しました。トラックバックありがとうございました!

OpenID accepted here Learn more about OpenID

About this Archive

This page is an archive of entries from June 2009 listed from newest to oldest.

February 2009 is the previous archive.

October 2009 is the next archive.

Find recent content on the main index or look in the archives to find all content.