« 2008年7月 | メイン | 2008年9月 »

2008年8月 アーカイブ

2008年8月13日

ある月の日数をMTのテンプレート機能だけで求める

先日、あるお客様で、MTのテンプレートの中で「2008年の2月は何日あるか?というように、ある月の日数を知りたい」という方がいらっしゃいました。日数を知りたい月と年を指定すると、日数を返すテンプレートタグをプラグインとして作成しようかと考えていたところ、「できれば'MT標準の機能だけでやりたい」とおっしゃられるので、ちょっと考えてみたのが、以下のテンプレートです。

<MTSetVarTemplate name="days_in_month">
<MTIf name="year">
<MTIf name="month">
<MTSetVar name="daysin[1]" value="31">
<MTSetVar name="daysin[2]" value="28">
<MTSetVar name="daysin[3]" value="31">
<MTSetVar name="daysin[4]" value="30">
<MTSetVar name="daysin[5]" value="31">
<MTSetVar name="daysin[6]" value="30">
<MTSetVar name="daysin[7]" value="31">
<MTSetVar name="daysin[8]" value="31">
<MTSetVar name="daysin[9]" value="30">
<MTSetVar name="daysin[10]" value="31">
<MTSetVar name="daysin[11]" value="30">
<MTSetVar name="daysin[12]" value="31">
<MTSetVarBlock name="days"><MTGetVar name="daysin" index="$month"></MTSetVarBlock>
<MTIf name="year" op="%" value="4" eq="0">
  <MTIf name="year" op="%" value="100">
    <MTSetVar name="leap_year" value="1">
  </MTIf>
<MTElseIf name="year" op="%" eq="0">
  <MTSetVar name="leap_year" value="1">
</MTIf>
<MTIf name="month" eq="2">
  <MTIf name="leap_year">
    <MTSetVar name="days" value="29">
  </MTIf>
</MTIf>
<MTGetVar name="days">
</MTIf>
</MTIf>
</MTSetVarTemplate>

上記テンプレートをテンプレートモジュールとして別途保存しておき、使いたいところで呼び出すか、使いたいテンプレートに貼付けておきます。

テンプレート変数として使用している、"days", "month", "year"等は同じ名称の変数が既に使われている可能性がありますが、その場合は、適当に変更してください。

2008年の各月の日数を求める例は、以下のようになります。

<h1>月の日数</h1>
<MTSetVar name="year" value="2008">
<ul>
<MTFor var="month" from="1" to="12">
<li>
<MTGetVar name="year">年<MTGetVar name="month">月は、
<MTGetVar name="days_in_month" strip_linefeeds="1" trim="1">日まであります。
</li>
</MTFor>
</ul>

これは、次のように表示されます。

    ・2008年1月は、 31日まであります。
    ・2008年2月は、 29日まであります。
    ・2008年3月は、 31日まであります。
    ・2008年4月は、 30日まであります。
    ・2008年5月は、 31日まであります。
    ・2008年6月は、 30日まであります。
    ・2008年7月は、 31日まであります。
    ・2008年8月は、 31日まであります。
    ・2008年9月は、 30日まであります。
    ・2008年10月は、 31日まであります。
    ・2008年11月は、 30日まであります。
    ・2008年12月は、 31日まであります。

このテンプレートは、これを使って作成したページ自体がボツになってしまったので、実際に使われることはなかったのですが、せっかくですので、ここでネタとして公開することにしました。

ほとんど実用的な使い道は思いつきませんが、MTCalendarタグを使わずにカレンダーを表示することに挑戦してみるのも楽しいかもしれません。

お問い合わせ

エムロジック株式会社ではMovable Typeによるサイト構築やプラグイン開発、iPhone・Windows等のアプリケーション開発業務を行っています。
お問い合わせはこちらまで。

2008年8月20日

MovableType用UploadDir Plugin Ver.0.61

MovableType用UploadDirプラグインのバージョンアップを行いました。変更点は次の通りです。

  • MT4.2に対応

MovableTypeにはファイルをアップロードする機能がありますが、ちょっと物足りないところがありました。
ファイルをアップロードするときに、アップロード先のディレクトリを指定できるのですが、標準では、このディレクトリを毎回指定する必要があります。
これは、たとえば、画像はimagesディレクトリの下に必ず保存しておきたい、という時には非常に不便なのです。
そこで、今回「UploadDirプラグイン」を作ってみました。
このプラグインを使うと、アップロードするファイルの拡張子にしたがって自動的に保存先のディレクトリを切り替えることが可能になります。

たとえば、JPEGファイルを選択すると、

uploaddir-jpg.gif

このように、自動的にパスにimagesが入力されます。
拡張子とディレクトリ名の関連付けはプラグインの設定から自由に行うことができます。

ぜひ、お試しください。

ドキュメント:UploadDirプラグイン ドキュメント
ダウンロード:zip形式tar.gz形式

MovableType用EasyPodcasting Plugin Ver.1.11

Movable Typeで手軽にPodcastingを始めることができるEasyPodcastingプラグインがMT4.2に対応しました。
ぜひ、お試しください。

ドキュメント:EasyPodcastingプラグイン ドキュメント
ダウンロード:zip形式tar.gz形式

なお、今回のプロジェクトでは、プラグイン開発をエムロジック株式会社、Flash製mp3プレーヤの開発をiceGearが行いました。
iceGearでは、mongocco!というWindows用のアバターチャットソフトウェアを開発しています。ぜひ、遊んでみてください。

MovableType用RenameLabel Plugin Ver.1.10

MovableType用RenameLabelプラグインのバージョンアップを行いました。変更点は次の通りです。

  • MT4.2に対応
  • 「親カテゴリを追加」の置換の修正

標準のエントリー編集画面で、例えば、「キーワード」フィールドにはファイルのURLを入れるとか、追記部分には「レビュー」を書くとか、本来のフィールドの名称とは異なった運用の仕方をすることがあります。
しかし、キーワードにURLを入力するというのは、なんとなく不自然ですし、運用時に説明しなくてはいけないというのも面倒です。
そこで、エントリー編集画面のフィールド名を変更するプラグインを作ってみました。

各ブログの「設定」画面で「プラグイン」タブを選択し、RenameLabelプラグインの「設定を表示」をクリックすると以下の画面が表示されます。

conf.gif

各フィールドに対応した入力フィールドに変更したいフィールド名を入力します。
入力後、「変更を保存」ボタンを押すと、内容が適用され、エントリー編集画面のフィールド名が変更されます。

edit.gif

ぜひ、使ってみてください。

ドキュメント:RenameLabelプラグイン ドキュメント
ダウンロード:zip形式tar.gz形式

当サイトで公開しているMTプラグイン等のMT4.2対応状況

当サイトで公開・配布しているMTプラグインやスクリプトのMovable Type 4.2対応状況をお知らせします。

2008/08/29現在

MT4.2対応(MT4.1対応のものをそのままご利用いただけます)

MT4.2対応済(最新版にアップデートすることでご利用いただけます)


2008年8月21日

MovableType用TemplateSetExporter Plugin Ver.0.60

MovableType用TemplateSetExporterプラグインのバージョンアップを行いました。変更点は次の通りです。

  • MT4.2対応
  • widgetsetに対応
  • テンプレートセット書き出し後の戻り先URLの修正

Movable Type 4.1からテンプレートセット機能が搭載されました。

テンプレートセットの選択と入れ替え | Movable Type 4 ドキュメント

テンプレートセットは、自由に作成することができます。

テンプレートセットの登録 | Movable Type 4 ドキュメント

しかし、作成するのは難しいと言う声も良く聞きます。
もっと簡単にテンプレートセットが作成できれば、テンプレートの配布の敷居もぐっとさがりますし、テスト環境から本番環境へのテンプレートの移行も気楽に行えるようになります。

そこで、テンプレートセットを作成するためのプラグインを作ってみました。

このプラグインを使うと、ブログごとのテンプレートをテンプレートセットとして出力することができるようになります。

テンプレートは、テンプレートセットの形で、ディレクトリに保存されます。
保存されたテンプレートセットは別のMovable Typeシステムに移動することもできますので、テスト環境で構築したテンプレートを本番環境に適用することが簡単に行えるようになります。
また、本プラグインで作成したテンプレートセットを配布することも簡単にできます。

ぜひ、お試しください。

ドキュメント:TemplateSetExporterプラグイン ドキュメント

ダウンロード:zip形式tar.gz形式

本プラグインは、GNU GENERAL PUBLIC LICENSE Version 2と独自ライセンスのデュアルライセンスにて公開されます。

MTで使用する場合
無償で利用できます。
MTOSで使用する場合
GNU GENERAL PUBLIC LICENSE Version 2にしたがいます

2008年8月22日

MovableType用FullScreenEditプラグイン v1.00

テンプレート編集画面のエディタ部分をフルスクリーン表示にするプラグインを作ってみました。

プラグインをインストールすると、ツールバーに以下のようにアイコンが追加されます。

fullscreen_button.jpg

クリックするとフルスクリーン表示になります。フルスクリーン表示のときにクリックすると、元のサイズに戻ります。こんな感じです。

おまけとして、フォントサイズも変更できます。

よろしければ、お試しください。

ドキュメント:FullScreenEditプラグイン ドキュメント
ダウンロード:zip形式tar.gz形式

2008年8月25日

MovableType用UploadDir Plugin Ver.0.62

MovableType用UploadDirプラグインのバージョンアップを行いました。変更点は次の通りです。

  • 特定の環境でScriptErrorが発生する不具合を修正した。
  • 標準の拡張子設定に「pdf,doc,xls,ppt」を追加した。

MovableTypeにはファイルをアップロードする機能がありますが、ちょっと物足りないところがありました。
ファイルをアップロードするときに、アップロード先のディレクトリを指定できるのですが、標準では、このディレクトリを毎回指定する必要があります。
これは、たとえば、画像はimagesディレクトリの下に必ず保存しておきたい、という時には非常に不便なのです。
そこで、今回「UploadDirプラグイン」を作ってみました。
このプラグインを使うと、アップロードするファイルの拡張子にしたがって自動的に保存先のディレクトリを切り替えることが可能になります。

たとえば、JPEGファイルを選択すると、

uploaddir-jpg.gif

このように、自動的にパスにimagesが入力されます。
拡張子とディレクトリ名の関連付けはプラグインの設定から自由に行うことができます。

ぜひ、お試しください。

ドキュメント:UploadDirプラグイン ドキュメント
ダウンロード:zip形式tar.gz形式

2008年8月28日

Win32版Apacheでリアルタイムにエラーログを見る

前回に引き続きWin32版Apache関係のネタを書いていきます。

ローカルにWin32版Apacheを用いたWebアプリケーション開発環境を構築した場合のメリットのひとつとして、ビルド・デバッグの手軽さという要素があるかと思います。
今回はローカル環境でそのような作業を行う場合に、役に立つかもしれないTipsを紹介しようと思います。

ファイルの配置ミスだったり、ファイル名のtypoだったり、Perlのモジュール不足だったり・・・ちょっとしたミスで期待した出力を得ることができない状況というのはよく発生することだと思います。
・・・よく発生するのは私だけかもしれません(笑)

このような状況に陥った場合には、まず最初にApacheのエラーログを見ることになると思いますが、事あるごとにテキストエディタでエラーログを開いて・・・という作業は結構かったるいものです。
私は一時期Apacheのログの最終行を表示するショートカットを作っていたりしました。

Windowsアプリケーションの開発者にはおなじみかもしれませんが、WindowsのAPIにOutputDebugStringというAPIがあります。
これは開発ツールが持つデバッガにデバッグ出力を行うためのものですが、開発ツールをインストールしなくとも、この出力を表示するDebugViewというツールがSysinternalsより公開されています(現在はMicrosoftが配布しています)
今回このツールを活用して、Win32版Apacheのエラーログをすばやく参照できるデバッグ補助環境を作りたいと思います。

DebugViewをインストールする

まず最初にDebugViewのインストールを行います。

DebugView for Windows

ページ右側にあるダウンロードリンク(Download DebugView)からファイル DebugView.zip をダウンロードし、適切なフォルダへ展開してください。
Download DebugView
DebugViewのインストールはこれで完了です。

mod_win32dstrをインストールする

ここで今回作成した小さなApacheモジュールmod_win32dstrをインストールします。
このモジュールはApacheのエラーログ出力をデバッガにも出力する機能を追加します。

ダウンロード: mod_win32dstr.zip
ライセンス: Apache 2.0

zipアーカイブに含まれるファイルmod_win32dstr.soがApache2.2向けにビルドされたモジュールです。このファイルをApacheのmodulesフォルダに移動します。
ソースコードも同梱していますので、Apacheのビルド環境があれば、ビルド・改変等も可能です。

次にhttpd.confを開き、

LoadModule win32dstr_module modules/mod_win32dstr.so
<IfModule mod_win32dstr.c>
    EnableWin32DStr On
</IfModule>

この4行を追加します。
これでmod_win32dstrのインストールは完了です。

DebugViewを使う

さきほどインストールしたDebugViewを起動してからApacheを起動します。
DebugViewの画面にApache起動のログが流れてくれば成功です。
DebugView
これでリアルタイムにApacheのエラーログを参照できる環境ができました。

あとはエラーログを見ながら作業したいときにDebugViewを起動しておくようにします。
ただし、このデバック出力は、ほかのアプリケーションも利用していますので、環境によっては、いろんなメッセージが流れていきますので注意しましょう。

DebugViewを他の用途に用いたいときは、httpd.confに追加したEnableWin32DStrディレクティブの値をOffにすることでエラーログの出力が行われなくなります。

応用

Webアプリケーションの開発では、標準エラー出力に出したものはApacheのエラーログに流れますので、これを利用して簡単にデバッグメッセージを出すことができます。

しかし、PerlにはWin32-API-OutputDebugStringというその名の通りのモジュールがあり、エラーログを経由しなくとも自由にデバッグメッセージの出力を行うことが可能です。
ActivePerlではppmを用いて容易にインストールできます。

ppm install Win32-API-OutputDebugString

このモジュールを使えばPerlのコードから簡単にデバッグメッセージを出力することができるようになります。私の環境ではMTプラグインの開発・デバッグ時に活躍しています。
MTでは警告メッセージの出力がフックされていますので、これをフックしないようにする、もしくはフックにあわせてデバッグ出力を行うようにする・・・などの作業を行うとよりよい情報が得られるようになります。
MT向けの部分についてはまた機会をみて書いていきたいと思います。

2008年8月29日

MovableType用EntityRefButtonプラグイン v0.2.2

EntityRefButtonプラグインのバージョンアップを行いました。変更点は次の通りです。
  • MovableType v4.2に対応しました。

MovableType v4.xでの変換ボタン

convert-button-v4.jpg

MovableType v3.3xでの変換ボタン

convert-button.jpg

エントリー編集画面およびクイック投稿画面に追加される「&(アンパサンド)」ボタンを押すだけで、選択した文字列を実体参照化してくれる便利なプラグインです。
ぜひお試しください。

ドキュメント:EntityRefbuttonプラグイン ドキュメント
ダウンロード:zip形式tar.gz形式