20070208

MovableTypeでのMail::Form運用

現在 MovableType でサイトを構築している。しかし自分が使用しているサーバーには Jcode module がインストールされていない。さらにはPerlのバージョンが5,8,1未満なので、ラッパーとしても動作させられない!
だがしかし!それでも!俺はサイドバーにメールフォームを設置したいんJAAAAAAAAAAAAAAAAAAA!!!!

こんなメールを頂きました(いや、随分と脚色はしてあるけどさ。でも趣旨はこんな感じ)  ぶっちゃけ「俺に言われてもなぁ…」って感じなんですが、折角なのでそんなユーザーさんの為に上記のような動作基準を満たしていない環境でも、比較的に楽にUnicode対応可能なスクリプトに改造する方法を紹介したいと思います。(ウチのMail::Formに限らず、あらゆるメール送信系のスクリプトで応用が利きます)

但しこれは『現在 MovableType を使用している環境』でのみ実行可能な裏技ですので(なぜならMTにバンドルされているモジュールを利用するんですよ)、其処のところだけはご了承ください。ついでに言えば、あくまでも『裏技』です。実施の際には全て自己責任でお願いいたします。

まずはスクリプト本体をエディターで開いてください。大概スクリプトの上の方に、"文字コードを変換する為の何か"を読み込んでいる個所があると思います。

■例1:Mail::Form v2,02j の場合
use Jcode;

■例2:大概のスクリプトなら
require './jcode.pl';

これらの行の先頭に"#"をつけましょう。。

■例1:Mail::Form v2,02j
#use Jcode;

■例2:大概のスクリプトなら
#require './jcode.pl';

こんな風に。
Perlでは#より右側はすべてコメントとして扱い、動作には全く影響を及ぼさなくなります。これをコメントアウトと言います。
こうして、まず既存の文字コード変換機能を無力化してやり、MTで使用している文字コード変換モジュールの機能を引っ張ってくる為の命令を、先ほどコメントアウトした個所の直下に追加してやります。

#use Jcode;

#MTがインストールされているディレクトリの指定
$mt_dir = '???';

push(@INC, "$mt_dir\/extlib/");
eval "use Jcode;"; 

青文字の個所が追加した部分です。
そして???という個所にMTがインストールされたディレクトリ(mt.cgiがあるディレクトリの事、デフォルトでは『mt』という名前)へのパスを記述します。これは相対パスでも絶対パスでも構いませんが、最後に"/"(スラッシュ)は付けないでください
(例えばMTの "plugins" ディレクトリの中に新規にフォルダを作成し、そこに設置するならば、相対パスで "../../../mt" と記述します。)

これで一応作業は完了。ウチのMail::Form(v2以上)ならもうこれだけで動作いたします。(この作業はmail.cgiとdecode.cgiの両方で行ってくださいね) 後は通常の設置手順にしたがってcgiを設置してください。
そしてテンプレートのお好きな個所に直接フォームを書きこめばミッションコンプリートですよ。

■フォーム記述例

<div id="mailform">
  <h2>メールフォーム</h2>
    <form method="post" action="decode.cgiへのパス">
      <p>
        お名前<br />
        <input type="text" name="name" /><br />
        メールアドレス<br />
        <input type="text" name="from" /><br />
        タイトル<br />
        <input type="text" name="subject" /><br />
        メッセージ<br />
        <textarea name="comment" rows="4"></textarea><br />
        <input type="submit" value="送る" />
      </p>
    </form>
</div>

<!--※注意!:decode.cgiへのパスは必ず絶対パス(もしくはURL)で記述して下さい。
          相対パスでは不都合が起きます。-->

あとは自由にスタイルシートでデザインを指定してあげてくださいね。

他のスクリプトの場合

ウチのスクリプトではない場合、もうちょっと手を入れてやらねば残念ながら動作いたしません。スクリプト全体を検索して "jcode::" もしくは "jcode'" となっている箇所を 全て"Jcode::"に置換してください。これで多分動くハズです。…多分。

[CLAP]

トラックバック

このエントリーのトラックバックURL:
http://magokorokikaku.com/mt/mt-tb.cgi/45

» メール送信スクリプト変更 from いるすか
な~んも考えないでMovable Typeに切り替えたために,デフォルトの文字コ... [続きを読む]

トラックバック時刻: 2007年07月20日 10:58