「Movable Type」をさらに高度なCMSとして活用するための様々な機能を提供してくれる「PowerCMS」ですが、実際に使っていると「ここがこうなれば使いやすいのだけれど...」と思う点が出てきました。
実際にどのような工夫をしたか、少しご紹介したいと思います。
カスタムオブジェクトグループの名前を取得したい
企業様が持つさまざまなデータを分かりやすい管理画面で管理できる「カスタムオブジェクト」。例えばふくやま芸術文化ホール 「リーデンローズ」で開催される催しを登録し、催しの内容毎にグルーピングしてページに表示するといったことができます。その際グループの名前をページに表示したいと思うのですが、ドキュメントを確認したところ該当するタグがありませんでした。
グループに属するデータはテンプレートタグ<MTCustomObjects group="[グループID]">
で出力するのですが、このタグの中では例えば催しのデータがコンテキストにセットされているので、カスタムオブジェクトグループのデータを取得することはできません。
そこで、PowerCMSのカスタムオブジェクトのコードを少し読んでみると、CustomObject::CustomObjectGroup->load( $args->{ group_id } );
でグループのオブジェクトを取得することができルことが分かりました。これを利用して、<mt:CustomObjectGroupData><$mt:CustomObjectGroupName$></mt:CustomObjectGroupData>
というタグでカスタムオブジェクトグループの名前を取得できるようにプラグインを作成しました。所要時間は約30分でした。
カスタムオブジェクトの一覧に任意のフィールドの情報を表示したい
例えば市内の医療機関の情報をカスタムオブジェクトに登録した場合、まれに同一名称の医療機関が一覧に並ぶことがあることに気付きました。同一名称の医療機関を区別するにはカスタムフィールドに入力している住所が使えそうです。
そこで、Movable Typeが備える「リスティングフレームワーク」を使用して一覧機能を拡張します。昨日MTQで質問が上がっていた「ウェブページの一覧画面のフォルダ表示を拡張するプラグイン」の回答としてコードを提示したのですが、カスタムオブジェクトのカスタムフィールドのデータも同じ手法で一覧に表示させることができるのです。
まとめ
PowerCMSはMovable Typeのために開発されたプラグインセットなので、Movable Typeの知識を生かしてより使いやすいCMSにしていくことができます。これからも研究を重ね、より使いやすいCMSを提供していきたいと考えています。