MODxのスニペットでリソースを自動インストール

MODxのスニペットを利用して、その他のリソースの自動インストールができそうなので、その概要をまとめておきます。

MODxの最大の特徴は、ユーザの発想を妨げることのないCMS(とフレームワークの中間っぽい)であるという点ですが、それ故に各種のリソースが分散しがちになります。特に新しくサイトを構築する場合、毎回、お気に入りのリソースをインストールし直すのが面倒だったりします。

リソースのインストールを楽にするためのMODx Resource Wizardモジュールというものもあるのですが、動作環境が厳しいのか、バージョンが古いのか上手く動作しません。なんとかリソースのインストールをもっと簡単にできないかと思っていたのですが、そんなに大げさなことをしなくても、スニペットから自動でインストールができてしまうのではないかということに気づきました。

MODxのマネージャから「リソース管理」→「スニペット」→「スニペットの作成」と進むと、「保存後にスニペットを実行」というチェックボックスがあります。何に使うのかよくわからなかったのですが、コードを読んでみると// Here we execute to snippet so it can install other stuffとあり、リソースなどのインストールに使われることを想定しているもののようです。該当のファイルは、/manager/processors/save_snippet.processor.phpになります。

この「保存後にスニペットを実行」にチェックをしてスニペットを保存すると、SNIPPET_INSTALL_MODEという定数が"true"となり、すぐさまそのスニペットのコードがeval()されます。そして、このSNIPPET_INSTALL_MODEにあるかどうかは、DocumentParser::insideManager()メソッドでチェックすることができます。

つまり、スニペット側でSNIPPET_INSTALL_MODEにあるかどうかをチェックし、SNIPPET_INSTALL_MODEであれば他のリソースをインストールする処理に分岐するようにすれば、スニペットのインストールと同時に、関連するリソースのインストールもできてしまいそうだというわけです。インストールのための処理は自前で書く必要がありますが、スニペットなので、MODxのAPIを利用したり、スニペットのプロパティをインストールのパラメータとして利用することもできます。

スニペット自体は利用しない場合でも、リソースのインストールが終わった後に自分自身を削除するようなスニペットを作成しておけば、テンプレート変数やプラグインなどの他のリソースのインストール用スニペットとしても使えそうです。

まだ、実際に試したわけではないので本当にうまくいくかどうかはわかりませんが、もしうまくいけば、複数のリソースのインストールが格段に楽になりますね。後で試してみようと思います。

コメント (4)

  • MEGU
  • 2008-03-29 23:13

すすすすす、すごーいっ。
私も、それってなにするやつなのかなって思っていたのですが、そんなすばらしい、ことに応用できそうとは!

イメージとしては、インストール用のスニペットを作って、それでテンプレートも、テンプレート変数も、関連スニペットもチャンクもインストールできちゃうって感じ…?

でも、それもすごいけど、それに気づくPhizeさんは、もっとすごーい!

褒め殺しです?(笑

そんな感じで、スニペットに関係するリソースとかインストールできちゃいそうな感じです。
ソースのコメントによると、そういう使われ方をメインに想定してるみたいです。
見つけたときは感動しました :)

でも、deprecatedとか書かれているので、ひょっとしたらなくなったり他の方法に変わるのかもです。

  • kino
  • 2008-04-01 11:07

木下です。

ひろろんさん( http://hiroron.com/)が
今、各種CMSのインストーラの機能を拡張してそれぞれのCMS用のモジュールのインストールにも対応させようとされていますが、それと連動させれば、構築が可也簡単になりそうですね。

Geeklog危うし。

こんばんは。

ひろろんさんのインストーラは、つい先日、MODx用のものも使わせていただきました。
CMSはファイル数が多いですが、最後まで安定して転送してくれるのがうれしいですね :)

モジュール対応、かなり期待できそうな感じですね :D

コメントフォーム

トラックバック (0)

この記事へのトラックバックはまだありません。

この記事のトラックバックURI
http://dxd8.com/archives/102/trackback/
この記事のURI
http://dxd8.com/archives/102/