SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Liferay 6.2を使ったWebコンテンツの作り方

Webアプリケーションフレームワーク「Liferay」のWebコンテンツ作成機能

Liferay 6.2を使ったWebコンテンツの作り方 第1回

テンプレートの作成

 Liferay Portalではテンプレート作成に、FreemakerやXSL、Velocityといくつかのテンプレートエンジンを使用することができます。Liferay PortalではVeloctyの使用が一般的なので、今回はVelocityを使ってサンプルを作っていきましょう。

 Liferay Portal起動前に、portal-ext.propertiesというファイルを作り、

velocity.engine.restricted.variables=

と1行書いたファイルを作ったかと思いますが、これにより、Webコンテントのテンプレート内でさまざまなクラスをコールするために必要な、serviceLocatorというインスタンスがコールできるようになります。

 次に、ストラクチャーの内容を表示するテンプレートを作りましょう。「管理」メニューの「テンプレート」を選択してください。

「Webコンテンツ」-「プルダウン」-「テンプレート」選択
「Webコンテンツ」-「プルダウン」-「テンプレート」選択

 左上の「追加」ボタンをクリックし、名前に「不動産テンプレート」と入力、「詳細」をクリックして、ストラクチャーの選択ボタンをクリック、先ほど作成した「不動産ストラクチャー」を選択しましょう。続いて言語プルダウンでVelocity(vm)を選択します。

 この記事からダウンロードできるサンプル(zipファイル)の中に、不動産テンプレート.txtが入っています。このファイルの中身を、テキストエリアに貼り付けて保存をクリックします。

テンプレート構文の説明

 テンプレート内で使用される変数やクラスの使い方は、ソースコードを直接参照する方が早かったりします。少し中身の解説をしましょう。

 物件名が

$reserved-article-title.data

という表記で出力されています。これはJournalStructureConstants.java内に、さまざまな定義が載っています。WebコンテンツはJournalArticleというオブジェクトで管理されているのですが、そのIDは$reserved-article-id.dataで取得することができます。

 家賃は

$rental_price.getData()

と表記されていますが、このrental_priceは、ストラクチャー設定画面で「名前」のところに指定した値が使用されます。また、この値はテンプレートで使用ストラクチャーを指定すると、テンプレート作成画面の左側、「項目」のところにこれら変数名がワンクリックでペーストされるショートカットが現れますので、そちらも使用できます。

テンプレート内項目指定中
テンプレート内項目指定中

 トリッキーなのがプルダウンのoptionのテキスト値表示です。本来であれば間取りなら、

$room_layout.getOptions()

でオプション値がListで取得できるはずなのですが、6.2ではバグのため空のリストが返ってきてしまいます。今回は自分でVelocityマクロを作成して、ストラクチャーのxmlをパースして取得するようにしています。

 画像に関してはテンプレートにあるように、

$room_images.getSiblings()

でListで複数イメージを取得して、表示できます。これも左側メニューの項目「画像」をクリックすると、foreach文を含んだ形でテキストエリアに表示用コードがペーストされます。

次のページ
ページにポートレットを配置

この記事は参考になりましたか?

Liferay 6.2を使ったWebコンテンツの作り方連載記事一覧

もっと読む

この記事の著者

竹生 泰之(日本ライフレイ株式会社)(タケオ ヤスユキ)

日本ライフレイ勤務。官公庁向け制御系システム開発、複合機のユーザーインターフェース開発、CRMのWebアプリケーションエンジニアを経て、現在はWebポータル/イントラネットのオープンソースアプリケーション、Liferayのコミュニティマネージャ/コンサルタントとして活動中。BMX(バイシクルモトクロス、20インチのレース/トリック用自転車)のフラットランド全日本選手権、King of Groundを1998年から運営し、BMX専門誌、Encounter Magazineの編集長も務め、撮影、執筆、翻訳、DTP全てを自ら手掛けるなど、プライベートでもマルチに動いている。・日本ライフレイユーザー会ライフレイ

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7708 2015/03/11 18:33

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー