Revo用パッケージの作成方法

MODX Revo 用のアドオンパッケージを作成する説明です。

自作のテンプレートや、スニペット、プラグインを作っていると他の人にも使って欲しい!という事があると思います。

Evo ではソースコードをそのまま配布して手動インストールしてもらう感じでしたが、Revo ではパッケージインストーラーが備わっていてパッケージ化されていればワンクリックでインストールが可能になりました。(実は Evo でも似たような Package Manager というモジュールがあるけどあまり普及していない)
インストーラーが読み込めるトランスポートパッケージの作り方を説明します。

パッケージ作成用のツールはいくつかありますが、GUIで操作出来る PackMan というツールを使用します。
PHP でビルドファイルを設定して自分でビルドする方法もあって、PackMan を使う前は私もやってましたが果てしなく面倒くさいです。

パッケージを作る準備

パッケージを開発する MODX とインストールのテストをする MODX は別に用意すると何かと楽です。

PackManをインストールする

「プロバイダから取得」をクリックして、検索エリアに PackMan と入力して、見つかったらダウンロードします。
家のアイコンをクリックしてパッケージマネージャーに戻り、先ほどダウンロードした PackMan をインストールします。
管理画面をリロードすると、「コンポーネント」のツリーに PackMan が追加されていると思います。

もし上手くインストール出来ない場合は、配布ページからダウンロードしてzipファイルのまま「core/packages」に保存して「プロバイダから取得」の右側の▽をクリック「転送済みパッケージの取得」からインストールしてみて下さい。

パッケージの内容を作る

例で「MyTemplate」という名前のテンプレートパッケージを作ることにします。

構成ファイルは以下のとおりです。

  • テンプレート本体
  • テンプレートで使用するCSSや画像ファイル
  • コピーライト用に「年」を表示するための簡単なスニペット。これは別にあっても無くても。

まず MODX 上でテンプレートとスニペットそれぞれのファイルを作ります。(投げやり
できれば被らないような名前がいいので、被りそうなのはとりあえず「パッケージ名.なんとか」という感じにしましょう。
テンプレートは「MyTemplate」、スニペットは「MyTemplate.year」という名前で作成します。

スニペットの中身は簡単にこんな感じです。

<?php
echo date('Y');
画像などのファイルは「assets/templates/MyTemplate/」というフォルダを作ってそこに入れて作成します。

パッケージプロファイルを作成

パッケージに含めるファイルが出来上がったら、PackMan を開いて PackageName の所に「MyTemplate」にしておきます。
右上のメニューから CreateNewProfile を選択して新しいプロファイルを作成します。ウィンドウの Name と Description は PackMan の管理にしか使用されないので自分で分かりやすい名前でもいいです。バージョンとリリース形態も必要なら編集します。

テンプレートを登録

Templates タブをクリックしてパッケージに含めるテンプレートを選択します。

選択するとテンプレートの名前を使用してディレクトリパスが自動的に入力されますが、このディレクトリの中のファイルも同梱されます。なので CSS や画像ファイルはこのディレクトリのパスに入れておくといいです。もしテンプレート名と別のフォルダだったり違う場所にファイルがある場合は正しいパスに修正しておきます。例えばテンプレートが「MyTemplateType1」、「MyTemplateType2」など複数あった場合は両方とも「{assets_path}templates/mytemplate/」にしておいてもいいです。

スニペットを登録する

CustomSnippetsタブに切り替えてスニペットを登録します。

テンプレートと同じくインクルードファイルやスニペットで使用するファイルがあれば、AssetsPath と CorePath のファイルが同梱されます。勝手に入力されますが、ファイルがなければ同梱されないだけなのでこのままにしておきます。

  • {assets_path}:テンプレートやCSSファイルなど
  • {core_path}:インクルード用のクラスファイルなど

リソースファイルを assets の中の compnents と templates どちらに置くかは適当ですが、今回のようなフロントエンド用のテンプレートだけなら templates 、スニペットやプラグインから使うCSS等のファイルは compnents にまとめてしまうのが定石みたいです。(パスは変更できますが自動入力されるのがそれなので)
もしもテンプレートやスニペットがたくさんあって複雑なパッケージ構成の場合はテンプレート用のファイルも compnents に全てまとめてしまってもいいです。

パッケージファイルを作る

設定が終わったら右上にある「ExportTransportPackage」というボタンをクリックします。
「mytemplate-1.0-beta1.transport.zip」というファイル名でzipファイルがダウンロード状態になるので適当なフォルダに保存して、これがトランスポートパッケージになります。

インストールテストする

きちんとインストールできるかテストします。
できれば開発用とは別の MODX を使いたいですが、別途用意出来ない場合は元のエレメントや同梱ファイルを予め全部削除しておきます。

テスト用の MODX のマネージャーから

を開いて「プロバイダから取得」の右にある▽をクリックして「Upload a Package」を選択します。
「Choose files.」でさっき作ったzipファイルを選択して「アップロード」し、状態が緑の文字で「Upload successful」となったら閉じます。

ウィンドウを閉じると画面がリロードされてパッケージ一覧のリストに「未インストール」という状態で「MyTemplate」が追加されていると思います。インストールボタン>続けるをクリックします。

コンソールウィンドウが出て最後に「パッケージのインストールに成功しました」と下の様な画面が出たらひとまずインストールは成功です。

インストールが成功したら、実際にテンプレートやスニペットを使用してみてきちんと使えるか確認して問題なければパッケージファイルの完成~!

パッケージが完成したら、パッケージの ZIP ファイルを配布したり公式ライブラリに登録申請しましょう(•ө•)ノ

レキシコン設定が何もない場合に出るエラー

レキシコンファイルが何もないとレキシコン設定を開いた時エラーが出ますが、気持ちが悪い場合は空でも良いので適当に「lexicon/en」ディレクトリを作っておき、ディレクトリ設定で追加しておくといいです。ネームスペースを作ったら勝手に作成されると思ったらされないようなので手動で作ります…。他の必要なコアファイルもあればまとめて同梱されるので以下のような書き方でいいと思います。

ソースパス
{core_path}components/MyPackage/
ターゲットパス
{core_path}components/

公式ライブラリに登録してみる

公式プロバイダ「modx.com」に登録していると、各 MODX ユーザーのパッケージマネージャーから検索やインストールが出来るようになります。バグやセキュリティの審査がありますが問題がなければ1週間~1ヶ月程度で登録してもらえると思います。

本家のサイトの右上にある「Login or Register」からログインまたはアカウントを作成しておきます。
英語ですが Extrasページ のメニューの一番下にある「Submit an Extra」というページから申請出来ます。
ちなみに登録された場合世界中の人が見るのでパッケージ説明などは翻訳ソフトを使ってもいいのでとりあえず英語で書いておくのが無難だと思います。

その他のパッケージ作成ツール