MovableTypeプラグインの最近のブログ記事

Perl/PHP両対応です。管理画面や検索結果などにも適用できますが、基本的にはダイナミックパブリッシングかDynamicMTMLで同一URLでスタイル分岐させて動かすのが正攻法でしょう。*CSS/JavaScriptだけでも出来てしまうんでしょうが。


<MTIfAndroid>
Android向け
<mt:else>
そうじゃない向け
</mt:else>
</MTIfAndroid>

一応、こっちもあります。基本同じですね。やり方。

参考:

*蛇足ですが、ダイナミック対応プラグインが少ないってのは(昔書かれたものは別にして)現在では書かない人が多いってことだけかと思います。軽い重いってことじゃなくて、ハイブリッドなパブリッシングが出来るってことですからもっと可能性が色々あると思いますよ。

6/19 Hack-A-Thon。

| コメント(0) | トラックバック(0)

各paramをmt:varに突っ込んでテンプレートを動的にbuildするcgi。

plugins/Viewer/tmpl/example.tmpl の場合、

mt-viewer.cgi?blog_id=1&template=example

mt-viewer.cgi?blog_id=1&template=example&id=1

とすることでid=1のページ(エントリ)アーカイブ的なものを作ったり。

テンプレートの中身を

<$mt:include module="$template" blog_id="$blog_id"$>

とかすることで各ブログ/ウェブサイトのモジュールをテンプレートとして使えるようになります。

詳細はまたいずれ。お疲れさまでしたー(今頃ビール飲んでるんやろな...)。

こういうのはMovable Typeコンテストに「ダッシュボードの部」ってのを設けたらいいんじゃないかなー

ユーザーダッシュボードの充実を希望 - MTQ | Movable Type 5 ユーザーコミュニティ

WordPress を引き合いに出すのは気分悪くする人もいるかもしれないのでしたくないのですが、しかし、あまりにも違うので議論にお付き合い下さい。

(中略)

Movable Type のユーザーダッシュボードの場合は、今後開発されるのでしょう!というような感じで、ほとんど有用な情報が表示されません。あるいは、あえてシンプルにして初心者に優しくしているのかもしれません。だとしたら、ブログのダッシュボードの方は、充実してもらいたいものです。


ということで、ユーザーダッシュボードを楽しく(そしてちょっとだけ便利に)してくれるプラグイン6種。 既にこれまでに公開済みのものも含みますが新規に2つほど追加して公開済みのものも若干手直しを入れてまとめて公開します(変更のないものもあります)。

ユーザーダッシュボードのキャプチャ

MT_Tags

MTタグを定期的にTweetしてくれるTwitterアカウント「MT_Tags」が紹介するタグをランダムにユーザーダッシュボードのタイトル(こんにちは、Junnamaさん)の代わりに表示します。気が散る方にはお勧めしません。

MTQ

MTQのフィードから新着10件を表示するウィジェットです。

QuickEntry

ダッシュボードからブログ記事を投稿出来るウィジェット(MT5.02でjQueryの扱い方が変更になっている点に対応、右カラム/メインカラムどちらに表示させることも可能にしました(出来てなかったので差し替え済み))。

UserDashboard

ユーザーダッシュボードに左メニューを表示させ、This is Youウィジェットを右カラムへ移動して着脱可能にします(不具合指摘いただいていたのですが5.02で動作確認済みです)。

ViewSite

ユーザーダッシュボード/システムメニューにViewSiteリンク(サイトを別ウィンドウで表示するリンク)を追加します(既に公開しているものと変更はなし)。

LoveRebuild

ユーザーダッシュボード/システムメニューにも再構築リンクを表示するウィジェットです(見栄えの修正 - * ふざけた画像は取り敢えず外したw)。

ちなみにこのエントリはQuickEntryダッシュボードからの投稿です。

Dakiny さんの呼びかけに壱さんが反応する形で何だかスレッドまで立ってますね。以下、引用は主に壱さんのエントリから。

今後のMTへの要望(その1・再構築編)

1.「再構築の重さ」で多くのユーザーを失った

まぁ、これが直接の原因かどうかは僕にはわかんないんですけどね。静的パブリッシングだから採用されるっていうケースも多いのは事実です。個人ブログとしてではなく、そこそこの規模のCMSが前提ですが。

2.MT標準のダイナミックパブリッシングは不十分

多くのプラグインはダイナミックパブリッシングには対応していません。
また、テンプレート内にPHPを記述することもよくありますが、そのテンプレートをダイナミックパブリッシング化する際には、PHPの部分をSmartyの記法に書き換える必要があります。
これらのことから、既存のブログをダイナミックパブリッシングに変えるのは困難です。
実質的に、ダイナミックパブリッシングは使えないと言って良いでしょう。

不十分なのは単にプラグインの書き手の手抜きではあるわけですよね。Power CMS for MTは基本ダイナミック全対応が前提です。確かに2つの言語で書くことの負担はあるわけですが。SAKKさんに落ち度があるとしたら、ドキュメントとかサンプルの少なさですね。ことダイナミックに関しては。

まぁ、前置きはいいです。黙ってコードを書けよってことだよ。

RebildAt1stViewを書き直した

  • MTディレクトリの直下のtools以下に「rebuild-from-fi」を設置して実行可能なパーミッション(755とか)を与える
  • plugins/以下にRebuildAt1stViewディレクトリをコピー(DBのアップグレードあり)
  • mtmlディレクトリのmtview_php.mtmlを出力ファイル名mtview.php、_htaccess.mtmlを出力ファイル名.htaccessとしてテンプレートに登録、再構築
  • 適用したいインデックス/アーカイブテンプレート編集画面で「このテンプレートの再構築を最初のリクエスト時に行う」にチェックを入れます
  • 再構築(チェックを入れてたら一瞬で終わる筈>再構築は単なるファイル削除だから)
  • 最初にリクエストがあった時点でファイルがなければ再構築されファイルが出力されます(で、ビルドされたファイルの内容がブラウザに返されます)

処理はPHPで行います。PHPがPerlスクリプトを介してビルドするから、Perlプラグインがそのまま使えます。吐き出されたファイルがPHPだったら、それもちゃんと処理されます。

何かうまく説明出来ないけどね、Perl版ダイナミックだけどPHPで動いててPHPが使えるソリューション、ってことだね。

話題ですよね。iPad。で、いち早くiPad対応サイトを作るべく、ね。(忙しくて話題について行けないと思われるのが癪なので)

Perl/PHP両方あるので管理画面や検索結果などにも適用できますが、やっぱりダイナミックパブリッシングかDynamicMTMLで同一URLでスタイル分岐させる等で動かすのが正攻法かと思います。実際はCSSとかJavaScriptだけでも出来てしまうんでしょうが。


<mt:IfiPad>
iPad向け
<mt:else>
そうじゃない向け
</mt:else>
</mt:IfiPad>

テストはしていません(一応UA情報変えて確認はしたけど...ってか、動くと思いますよ普通に)。ってまだ買ってないんだもの。

QuickEntryプラグイン。

| コメント(3) | トラックバック(0)

ユーザーダッシュボード他各ダッシュボードからブログに投稿できるダッシュボンードウィジェットです。ブログ以外のダッシュボードでは権限を有するブログをSelectメニューから選択してください。

クイックエントリダッシュボードウィジェット

QuickEntry.zip

クイック投稿ってのが目に付いたのでMTプラグイン作ってみた。

クイックエントリダッシュボードウィジェット


QuickEntry.zip

で、これを使って投稿テストしてみます。とはいえ、これってむしろユーザーダッシュボードにあったほうがいいですよね。後で時間があったらそうしてみよう。

5月10日さらに追記:新規に作成したユーザーにも(正確には権限を割り当てた際に)適用するようにしました。

5月10日追記:管理者以外のユーザーのところで表示オプションがおかしなところに出てしまっていたので修正しました。

Twitter / にっく:【緩募】MovableTypeで、Aさん(もしくはシステム管理者)がカスタムフィールドの並び替えをしたときに、他ユーザー(Bさん、Cさん)も強制的にAさんの並び順にさせる方法をご存じの方、いらっしゃいますでしょうか。

Twitter / Seiko Kuchida:@Nick_smallworld カスタムフィールドの並び順に関して私の方でわかってるのはこのくらいですが、少しでも参考になれば。てゆか誰かプラグイン作ってくれないかなあ。 #movabletype

【緩募】って書いてあったので見逃してました...とか。要するにそういうこと(エントリの表示オプションを管理者が変更した時に全対象ユーザーに設定を適用)をするプラグインです。

ただ、単にそうすると管理者以外のユーザーが表示オプションを変更した時に違和感があるので、プラグインを設置すると管理者以外では「表示オプション(Display Options)」のリンクが非表示になるようにしました。

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Love Internet Explorer。

| コメント(0) | トラックバック(0)

ほら、MTの管理画面いじっててCSSとかJavaScript(Ajax)とか駆使してごにょごにょやってるときにね。ついカッとなって。


<MTIfIE>
<mt:if name="ie_version" eq="6">

We love Internet Explorer 6!!

</mt:if>
</MTIfIE>

mt:var name="ie_version_id" とすると6.0が帰ります。

ダウンロード

あれこれ忙しかったんですが明日の公開になるとエイプリルフールネタにされてしまうので今日公開してみました(ほんとはPower CMS for WPとか、て考えたりもしたけど、何かもうありがちすぎてやめる。僕はMTでいいじゃん派だから)。

最近もちろん仕事でも色々作っているんですが、一番個人的に面白かったのがこれです。

チュートリアル的に丁寧に書いたつもりなので詳細はリンク先を見ていただくとして、僕は基本的にCMSは静的にページを生成できるものが最強だと思ってます。動的生成って色々逃げられる代わりに本当に大きなサイト動かそうと思ったらセキュアに運営しようと思ったら、DB接続が常に前提なものって本当夜も眠れない。負荷がきつくなったら、とかDBがクラッシュしたら、とかDBが落ちた、とか考えるとしんどいんですね。ただ、部分的に動的ってのが好きな人が世の中には一定数いるらしい。

MTの場合はダイナミックパブリッシングのしくみが標準で用意されていて、動的にページを変化させるとか(時間帯によって「おはようございます」とかたとえばそんなものひとつとっても)はテンプレートタグで出来るわけですが、僕自身ダイナミックパブリッシングにはいくつか不満がありました。

MTのダイナミックパブリッシングのキャッシュ

MTのダイナミックパブリッシングでは、一度ページが閲覧されるとビルドされた内容がキャッシュされます(キャッシュを有効にしている場合)。一回目の表示は重いです。いかにもDBにアクセスして表示してますって感じ。ところが一度キャッシュされたページは早い。ファイルを返してるだけですから比較にならない軽さです。

ところが、MTのダイナミックパブリッシング(というよりSmartyのキャッシュかな?)ではクエリ付きのページのキャッシュが出来ない。正確には出来ないんじゃなくて、?query=hoge がついているものとついていないものが同じキャッシュに保存されてしまうため、クエリーなんかで分岐したいケースで使えないのです。同じく時間によってどうとか、常に動的に変化させたい場合は使えない。ところがキャッシュが無効なダイナミックパブリッシングって重いというか、DBが悲鳴を上げているのが伝わってきて痛々しいのです。

なので、共通部分や動的に構築しなくて良い部分をスタティックに吐くようにしてそいつをダイナミックからインクルードして、とかやるんですけど、はっきりいってもっと楽にやりたいじゃないですか。それって「テクニック」的な何かなわけで、そいつを実装・構築する人に考えさせちゃ駄目だと思うんです。また、MTの場合はPHP対応プラグインがまだまだ少なくて、Perlで書いたのが動かないって指摘も良くされるわけで、じゃぁPerlで構築する部分をインクルードして...ってやっぱりそれは何かち・が・うと思うのですね。

MTML使いはもっと自由にサイトを構築できていいと思う

また、出力されるアーカイブをPHP化してどうってのもあんまり好きじゃない。自分で書いててなんだけど、この記事で紹介したみたいな書き方って結局CMS使ってるメリットないもの(MT5のBrand new API(DPAPI)と格闘してみた(続き))。

誰かがどこかで書いてましたけど、一つのファイルやテンプレートの中にHTMLとJavaScriptとCSSだけならまだしもPHPとSQLまで書いてあるって何なんだと思うのです。

で、PHPのコードとか直接書くくらいだったら、MTタグ書いてそいつをビルドできれば敷居がグッと低くなるし、PHPは書けないけどMTMLは書けるって人は嬉しくないかな? と思ったのが発端です。

だってこれ使うと例えばWe○○elease2で作ったページにだってMTタグが書けるんですよ? (僕がそういうこと書いちゃいかんか...)。もちろんDreamweverでページ作成してアップしてるサイトだって、MTタグ書いておけばそれが動いちゃうんだ。単なるテンプレートエンジンとして考えればコードの中にプロラグムとHTMLが混在してるより、MTの場合は「タグ」ですから。

そんでもって、MTMLってもう単なるタグじゃないくらいにプログラミングチックなことも出来るわけですよね。だったらMTML使いはもっと自由に動的なWebサイトの構築が出来ていいんじゃないか?

何だかまとまらないポストになりましたが、これ、面白いと思うんでついカッとなって(嘘)久しぶりにポストした次第です。

無償での利用も出来るようにしてますので、是非試してみてください。これ、面白いです。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちMovableTypeプラグインカテゴリに属しているものが含まれています。

前のカテゴリはMovableTypeです。

次のカテゴリはWeb制作・ビジネスです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。