レイアウトポートレットについて

レイアウトポートレットについて

Jetspeed2のレイアウトは、jetspeed-layout ポートレットに管理されています。ここでいうレイアウトは、ページ内でポートレットを1列で表示してみたり、2列で表示してみたり、という感じで、ポートレットの配置に関するレイアウトを指します。ここでは、どのようにそれが定義されているか、新しいレイアウトを追加するにはどうしたらよいかを見ていきます。

設定ファイルについて

レイアウトポートレットは、ソースコード上では、layout-portlets/ 以下に置かれています。J2をビルドすると、jetspeed-layout.warが配備されます(J2 の内部的には、jetspeed-で始まるポートレットアプリケーションは、J2用の特殊なポートレットとして認識されます。ですので、PALMポートレットで確認すると、<local>と出ると思います)。そこに置かれているファイルを見るとわかりますが、レイアウトポートレットも基本的には、普通のポートレットと同様に作られているのがわかると思います。

ソースコードを見ると、LayoutPortlet と MultiColumnPortlet の2つしかないのがわかります。これらがポートレットの配置をコントロールし、その配置は、portlet.xml から渡されるパラメータにより、2列で表示したり、3列で表示したり、しています。ですので、新たな配置方法を利用したい場合は、portlet.xml に追加することになります(斬新なレイアウトを追加したい場合は、MultiColumnPortletと同様な新たなポートレットを追加すれば良いと思います(^^))。

レイアウトの追加

layout-portlets/src/webapp/WEB-INF/portlet.xml を見ると、現在、使える配置方法がわかります。ですので、これらの配置方法を適用したい場合は、使用したいものの portlet-name を psml 内で記述すると適用されます。

いろいろな配置があると思いますが、もし、左側が 75% と右側 25% の2列で表示したい場合は、以下のようなポートレットの定義を portlet.xml に追加すればよいと思います。

<portlet id="VelocityTwoColumns7525">
<portlet-name>VelocityTwoColumns7525</portlet-name>
<display-name>75/25 Two Columns Layout Using Velocity</display-name>
<init-param>
<name>ViewPage</name>
<value>columns</value>
</init-param>
<init-param>
<name>MaxPage</name>
<value>maximized</value>
</init-param>
<init-param>
<name>columns</name>
<value>2</value>
</init-param>
<init-param>
<name>sizes</name>
<value>75%,25%</value>
</init-param>
<init-param>
<name>layoutType</name>
<value>TwoColumns</value>
</init-param>
<portlet-class>org.apache.jetspeed.portlets.layout.MultiColumnPortlet</portlet-class>
<expiration-cache>-1</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
<portlet-mode>edit</portlet-mode>
<portlet-mode>help</portlet-mode>
</supports>
<portlet-info>
<title>VelocityTwoColumns7525NoActions</title>
<short-title>VelocityTwoColumns7525NoActions</short-title>
</portlet-info>
</portlet>

ぜひ、いろいろなレイアウトを試してみてください。

カテゴリー: Jetspeed パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload the CAPTCHA.