(エムロジック放課後プロジェクト)このエントリで書きましたが、MT5ではSQLiteは対応していません。MTをインストール時にはSQLiteも選択することができ、インストールも最後まで行うことができます。実際に動かしてみても普通に使えるみたいなのですが、いくつか問題を発見しました。value」というエラーが出て削除ができません。カスタムフィールドがうまく動かないタグ名を「EntryDesc」としてテキストフィールドを追加したとき、<$MTEntryDesc$>タグを使っても再構築後に表示されない。これは、他の種類のフィールドでも同様で、「entrydesc」のように小文字にしないとうまく動かないこの他にも、まだ、問題はあるかもしれません。サポートしていないものなのですがから、正常に動作しなくても仕方ないと思いますが、もしかすると、同じようにエラーが起きて悩んでいる人もいるかも知れないので、ここに書いておきます。MT5では素直にMySQLを使うのが良さそうです。Typeによるサイト構築やプラグイン開発、iPhone・Windows等のアプリケーション開発業務を行っています。お問い合わせはこちらまで。2009年10月28日プラグインからメニューをどこに追加するかを指定するMTプラグインで、管理画面のメニューに項目を追加するには、レジストリを使います。そこでは、「view」オプションを使って「どの画面」にメニューを追加するかを指定できます。"blog",},},},},},});MT->add_plugin($plugin);こんな感じで、指定するとブログメニューにだけメニューが追加できます。今まではこんな感じで、blogを指定すればブログメニューに、systemを指定すればシステムメニューに、view自体を指定しなければ両方に追加されたのですが、MT5からはビューが増えたこともあり、配列を渡すことで複数のviewを追加できるようになりました。"system"],},},},},},});MT->add_plugin($plugin);こんな感じにすると、ブログ、システム、ウェブサイトのメニューに新しくメニューを追加することができるようになります。ここでは、以下の指定ができます。userユーザーダッシュボードblogブログメニューsystemシステムメニューwebsiteウェブサイトメニューこの中でも、「user」が非常に面白くて、これを指定すると、本来メニューが存在しないユーザーダッシュボードに追加したメニューがひとつだけぽつんと表示されます。「俺メニュー」という感じです。面白いので、ぜひ試してみてください。9日MT5とMT4の動作環境の違いを調べてみました先日MovableTypeの新しいバージョンであるMT5のβ版が公開されました。インストールしてMT4との違いを調べている人もいるのではないかと思います。僕は、MT4とMT5の動作環境の違いを調べてみました。参考にしたのは、以下のドキュメントです。ドキュメント現在β1なので、今後この条件も変わってくることもあるかもしれません。β1のドキュメントで比較してみたいと思います。Windows編MTのスケジュールタスク機能は、指定日投稿のほかにも公開キューによる再構築や迷惑コメント・トラックバックの削除、不要になったセッションやテンポラリファイルの削除など重要な処理を行っています(弊社でもいくつかのプラグインでスケジュールタスクを利用しています)。MTの機能をフルに活用したいのであれば、この機能は可能な限り設定するべきです。設定が必要であり、利用するサーバーによってはこの設定を行うことができずに、スケジュールタスク機能を設定しないまま利用されている方もいらっしゃるのではないかと思います。利用の2通りの方法が用意されています。どちらの方法もサーバーの設定を必要とせず外部からMTのスケジュールタスクを実行させることが可能なのですが、その設定方法については具体的に解説されていません。このサイトでは以前Rubyスクリプトを用いた方法を紹介しましたが、今回は、Windowsに限定した、WSH(VBScript)を使った方法を紹介したいと思います。2003以上の環境であれば、追加のソフトを必要としないことが特徴です。(0)2009年7月23日ブログごとにプラグインの有効/無効を切り替えるMTプラグインは、MTシステムにインストールするとシステム単位の有効/無効は指定できますが、ブログごとの有効/無効を指定することができません(2009/07現在)。システムに実装されていない以上プラグインで実装するしかないわけです。毎回同じようなコードを書くわけで、いいかげんテンプレート化できてきたので、ここで、紹介しておこうと思います。(6)2009年5月13日MAMPとMacGDBpでPHPスクリプトのデバッグ環境を構築する少し前に「MAMPにMTをインストールする際のメモ」という記事を書きましたが、今回はそこで書き忘れたPHPのデバッグ環境の構築について書いてみたいと思います。MacGDBpという、XdebugのGUIフロントエンドを使用します。ダウンロード、アーカイブ展開後、MacGDBp本体をアプリケーションフォルダにコピーするだけです。Xdebugのインストール次にサーバ側にXdebugエクステンションをインストールします。XdebugのバイナリパッケージがActiveStateにありますのでこれを利用します。X"をダウンロードし、展開します。5.2.6)にあわせてエクステンション(xdebug.so)を選択し、以下の場所へコピーします。以下の設定をファイルの最後へ追加します。Optimizerを無効にするため、以下の行の先頭にセミコロンを入れ、コメントにします。zend_extension_manager.optimizer=/Applications/MAMP/bin/php5/zend/lib/Optimizer-3.3.3MacGDBpでスクリプトをデバッグするMacGDBpを起動すると、デバッガ画面が開きます。この状態で、デバッグしたいページをブラウザからアクセスすると、ブラウザ上には何も表示されませんが、MacGDBpでは次のような画面になり、スクリプトの先頭で停止します。画面上部左側では、変数の内容を確認できます。スクリプトを任意の場所で停止したい場合は、Breakpointsウィンドウを開き、画面下部の「+」をクリックしてスクリプトを指定し、画面上部に表示されたスクリプトから停止させたい箇所の行番号部分をクリックします。これでPHPスクリプトのデバッグが出来るようになり、ダイナミックパブリッシングに対応したMTプラグインの開発効率が上がるはず(?)です。パーマリンク2009年4月22日cronやログフィードを使わずにスケジュールタスクを実行する方法MTで指定日投稿やその他のスケジュールタスクを実行するには、cronなどで定期的にrun-periodic-taskを実行する方法が良く知られています。この他にも、ログ・フィードを取得するタイミングでスケジュールタスクを実行することもできます。前者はcrontabに登録しなくてはいけませんし、後者はフィードを定期的に取得する必要があります。フィードリーダーなどに登録して自動的に取得する方法もありますが、ログの情報を外部に預けることに抵抗がある人もいるのではないかと思います。そこで、第三の方法です。XML-RPCを使う方法があります。WikipediaXML-RPCを使うと、外部のアプリケーションからMTに用意されたAPIを実行することができます。APIを用いたブログエディタもたくさん開発されています。APIの「runPeriodicTasks」メソッドを呼ぶことで、スケジュールタスクを実行します。試しに、Rubyでさくさくとスクリプトを書いてみました。#{e.faultString}"endこのスクリプトをテキストエディタなどに貼り付けて、scheduke_task.rbのようなファイル名で保存します。Webサービスパスワードを入力してください。このスクリプトをWindowsのタスクスケジューラなどで定期的に実行すれば、MTのスケジュールタスクを実行することができます。設定が面倒なら、手動で実行しても良いでしょう(笑)これなら、手元の普段使っているPCからでも操作ができます。パーマリンク2009年3月25日MAMPにMTをインストールする際のメモMT関連の開発にはMAMPに複数のバージョンのMTを同時にインストールして使っていますが、毎回新しいバージョンを入れる度にやり方をすっかり忘れているので、次にインストールする時のためにここにメモしておきます。MTのアーカイブを展開後、"mt425"等バージョン番号をつけたディレクトリ名にrenameし、DocumentRootへコピーする。以下の内容でmt-config.cgiを作成する。/usr/sbin/sendmailMySQLのSoketファイルは/Applications/MAMP/tmp/mysql/mysql.sockにある。mt-config.cgiのDBSocketにはこれを設定する。バージョン毎のディレクトリ以下で直接cgiが動くよう、DocumentRootに以下の内容の.htaccessが存在するか確認し、なければ作成する。.cgimt-config.cgiで指定したデータベースを作成する。mysql/mysqladminは/Applications/MAMP/Library/binにある。--default-character-set=utf8mt.cfgにアクセスする。MAMPを起動しても、Apache/MySQLサーバの状態が「赤」になり、起動しないことがたまにあります。いう場合は、/Applications/MAMP/bin/apache2/logs/httpd.pidが存在するならそれを削除してみます。MySQLで同様の場合は、/Applications/MAMP/tmp/mysql/mysql.pidを削除してみます。(0)2009年3月11日MTのDBをSQLiteからMySQLへMTが動いているサーバを移転することになりました。旧サーバはSQLiteしか使えない新サーバはMySQLしか使えないということで、SQLiteのファイルをそのまま移動して終わりと言うわけにはいきません。どこかで、新サーバのMySQLにデータを移行するために変換を行う必要があります。そこで、こんな方法を考えてみました。」を使い、MySQLにコンバートMySQLのデータベースをdumpするdumpしたデータを新サーバのMySQLにインポートするこれで、うまくいくはずなんですが、はまったのが旧サーバとローカルサーバのDBD::SQLiteのバージョンを揃える必要があるという点でした。今回は、旧サーバのバージョンにあわせてモジュールをインストールしました。この手の作業は、仕事で時々発生することがあると思うので、ここにメモしておきます。Typeの動作環境を作る話を書きました。Typeを動作させるという最初の段階で、これらをインストールする必要があります。5.10など、バージョンによってその方法も異なってきます。Typeの環境を構築する場合にインストールするモジュールを整理しておきたいと思います。(0)2009年1月28日Vista上のXAMPP1.7.0のセキュリティ画面での403エラーを回避する方法WindowsマシンにXAMPPをインストールしてローカルサーバ環境をつくり、その上でMTを使ってサイト構築をしたり、プラグインのテストをしたりという方法は非常にポピュラーになってきています。意気込んでみたのですが、インストールが終わりセキュリティの設定をしようというところで、タイトルのエラーにぶち当たりました。Typeの管理画面カスタマイズの小ネタを書いていこうと思います。用いた案件などで、まれに「使えないメニュー項目を表示しないでほしい」という要望を聞くことかあるのですが、実は、これには簡単な解決方法があります。4.1以降には「HideDisabledMenus」という環境変数が追加されています。することで、通常グレーアウトされるメニュー項目が非表示になります。設定はmt-config.cgiに次の1行を挿入します。設定しない限り非表示にはなりません。この設定はアンドキュメント(?)ですので自己責任でお使いください。この設定で非表示になるメニュー項目は、「使えない」メニュー項目なのですが、これはアクセスしているユーザーに付与された権限によって、判断されています。ユーザーが「使わない」メニュー項目を非表示にしたい場合には、そのユーザーの権限を「使えない」と判断される権限に変更する必要があります。「ウェブページの管理(manage_pages)」権限を持たない状態に設定しなければなりません。ユーザーに付与される権限は、複数の権限を組み合わせた「ロール」で管理されており、このロールを作成・編集し、適切に割り当てることで、ユーザーが持つ権限をカスタマイズすることになります。この段階的な権限設定はユーザー管理を徹底したいサイトでは便利な機能ですが、その反面設定の手数が多くなってしまい、熟知していないと設定ミスの原因にもなりかねません。そこでこういったメニューへの要望をプラグインで実現する方法を紹介したいと思います。(0)2008年12月24日シェルアクセスできないレンタルサーバでMTのプラグインをデバッグする今回もMTのデバッグネタです。先日、弊社のプラグインをインストールしたところうまく動かない、というお客様がいらっしゃいました。手元の環境では問題なく動作していますが、お客様の管理画面にアクセスして調べてみると、やはりうまく動作してません。サーバのシェルにアクセスして調べようにも、お客様が契約されたレンタルサーバでは、シェルでのアクセスが出来ない環境でした。このプラグインは、テンプレート内にPerlのスクリプトを記述できるようにするもので、再構築時にスクリプトを実行し、その結果を出力します。プラグインには2つスクリプトが同梱されていて、それぞれ指定された場所へインストールするようドキュメントに書かれていますが、私は以下のようにファイルを配置し、プラグインディレクトリへコピーしました。使い方は、テンプレートにPerlスクリプトを記述し、MTPerlScriptタグで囲うだけです。例として、MTのコンフィグをダンプするスクリプトを書くと以下のようになります。1つのテンプレートの中にMTPerlScriptタグをいくつも置くこともできます。サブルーチンを定義することも出来ます。作成したテンプレートを再構築し、出力内容を確認するという手順を繰返して、デバッグします。便利かつ強力なプラグインですが、その反面、テンプレートの編集権限さえあれば、何でも出来てしまう危険なプラグインでもありますので、取り扱いにはご注意ください。(0)2008年11月26日Windows環境のMTでmemcachedを使う懲りることを知らない私は、前回に引き続きWindows関係のネタを書いていこうと思います。分散型メモリキャッシュシステムであるmemcachedを使ったキャッシュ機構が組み込まれています。システム自体は、大規模なシステムでこそより大きな効果を発揮する性質のものではありますが、メモリに余裕があれば、単体での利用でもかなりの効果を望めます。MT::Memcachedを使った開発を行う場合、ローカル環境で動作確認できると大変便利です。Typeでmemcachedを利用する方法を紹介したいと思います。(0)2008年11月12日MTの一部の機能をコマンドラインから操作するプラグイン(には限りませんが)を書いていると、これから書こうとしているコードやちょっとした思いつきが正しく動くのかどうか確認したくなることがあります。確認のためには、最低限の動作をするプラグインに仕上げ、ブラウザからアクセスし、ログあるいはデバッガで確認するという手順を踏む必要がありますが、確認したいコードがたった1行、例えば、MT->version_number()がどういう形式の値を返すのか知りたい、というときには、いちいち前述のような作業を行うのは面倒です。最低限の動作をさせるために書いた部分に問題があり、もともと確認したかったところへなかなか到達しない、ということもありがちです。した場合に、役に立つのが、コマンドラインからMTの一部の機能を操作するスクリプトです。(スクリプトといっても、デバッガが起動し、MTのインスタンスを生成した後、breakするだけなのですが...。これをMTをインストールしたディレクトリの下にある、toolsディレクトリに配置して、そこから起動します。ここではconsoleというファイル名にしています。スクリプトを起動すると、デバッガのプロンプトが表示されますので、後はperlのプログラムを記述するだけです。変数$mtがMTのインスタンスですので、これを使っていろいろと試すことができます。