Organizing the Source
バグの修正や製品への新機能の追加に取り組むときは、Liferay ソースがどのように構成されているかをしっかりと理解することが重要です。 Liferay Source は、プラットフォームが提供するさまざまなフレームワークの完全な実装を提供するため、カスタム プロジェクトを構築する際の優れたリファレンス ソースにもなります。
Liferay Source は現在、2 つの主な領域で構成されています。
- ポータル コア - これらは、まだモジュールに抽出されていない元のプラットフォームの一部です。 これらには、portal-impl、portal-service、portal-web など、Liferay 6.2 からの馴染みのある名前が付けられています。
- モジュール - 多くの機能がモジュールとして抽出され、 liferay-portal/modules ディレクトリに保存されています。 多くのモジュールは Liferay MVC パターンに従っており、関連する .api、.service、および .web モジュールに編成されています。
詳細情報
Liferay Source で使用されているパターンのいくつかをより深く理解するには、Liferay の公式ドキュメントにある Web アプリケーションの開発チュートリアルを必ずお読みください。
ブログウィジェット
次の例では、すぐに使用できる Blogs ウィジェットを使用し、そのアプリケーション内のより関連性の高いパターンのいくつかを強調表示するとともに、コード内の特定のセクションのドキュメントへのリンクを提供します。
ブログポータル
liferay-portal/modules/apps/blogs/blogs-web/src/main/java/ com/liferay/blogs/web/internal/portlet/BlogsPortlet.java
BlogsPortlet は Liferay MVC パターンに準拠しており、ブログ ウィジェットのメイン エントリ ポイントです。 注意すべき点の 1 つは、BlogsPortlet クラスにはビュー テンプレートの初期化パラメータがリストされていないことです。 これについては次に詳しく説明します。
詳細については、 Liferay MVC ドキュメントを参照してください。
ブログViewMVCRenderCommand
liferay-portal/modules/apps/blogs/blogs-web/src/main/java/ com/liferay/blogs/web/internal/portlet/BlogsViewMVCRenderCommand.java
ポートレット コンポーネントに ビュー テンプレートがリストされていない場合、通常は MVCRenderCommand がエントリ .jsp ファイルにディスパッチされることを意味します。 BlogsViewMVCRenderCommand は、/ と /blogs/view の両方に対して /blogs/view.jsp へのディスパッチを処理します。
ビュー.jsp
liferay-portal/modules/apps/blogs/blogs-web/src/main/resources /META-INF/resources/blogs/view.jsp
ブログ ウィジェットの UI のメイン エントリ ポイントを提供します。 Web アプリケーションの開発チュートリアルには、エントリー レベルの JSP 開発の優れた例がいくつか記載されています。
アセットレンダラー
liferay-portal/modules/apps/blogs/blogs-web/src/main/java/ com/liferay/blogs/web/asset/model
アセットレンダラーはアセットフレームワークの一部であり、アセットパブリッシングを使用してアセットをレンダリングするために使用されます。
パネルエントリー
liferay-portal/modules/apps/blogs/blogs-web/src/main/java/ com/liferay/blogs/web/internal/application/list/BlogsPanelApp.java
パネル エントリを使用すると、製品メニューにウィジェットを追加して、プロジェクトに管理ビューを持たせることができます。
設定
liferay-portal/modules/apps/blogs/blogs-web/src/main/java/ com/liferay/blogs/web/internal/configuration/BlogsPortletInstanceConfiguration.java
構成コンポーネントを使用して、システム設定に構成可能なパラメータを追加します。 これにより、すぐに使える機能を使用してプロジェクトを簡単に構成できるようになります。
スケジューラー
liferay-portal/modules/apps/blogs/blogs-web/src/main/java/ com/liferay/blogs/web/internal/messaging/CheckEntryMessageListener.java
任意のアプリケーションにスケジュールされたタスクを追加します。 これは、アプリケーション内で定期的に実行する必要があるものがある場合に便利です。
フレンドリーURL
liferay-portal/modules/apps/blogs/blogs-web/src/main/java/ com/liferay/blogs/web/internal/portlet/route/BlogsFriendlyURLMapper.java
フレンドリー URL を使用すると、アプリケーションはレンダリング URL とアクション URL に SEO に適した URL を使用できるようになります。
動的インクルード
liferay-portal/modules/apps/blogs/blogs-web/src/main/java/ com/liferay/blogs/web/internal/servlet/taglib/BlogsPortletHeaderJSPDynamicInclude.java
動的インクルードにより、フラグメント バンドルを必要とせずに UI をカスタマイズできるため、アップグレードが容易になります。
アプリケーションディスプレイテンプレート
liferay-portal/modules/apps/blogs/blogs-web/src/main/java/ com/liferay/blogs/web/internal/template/BlogsPortletDisplayTemplateHandler.java
アプリケーション表示テンプレートを使用すると、標準の JSP の代わりに Freemarker テンプレートを使用できます。 これにより、ADT は JSP を直接カスタマイズするよりもアップグレードしやすくなります。
アプリケーション表示テンプレートのサンプル
/Users/jamie/Repos/liferay-portal/modules/apps/blogs/blogs-web/src/main/resources/ com/liferay/blogs/web/template/dependencies/portlet_display_template_basic.ftl
多くのすぐに使用できるアプリケーションには、基本的なアプリケーション表示テンプレートが付属しており、それらを使い始めるのがはるかに簡単になります。 たとえば、ブログ ウィジェットには、ブログ エントリをリストするための基本テンプレートが付属しており、JSP 版に似ています。
これらはブログウィジェットで使用されているフレームワークのほんの一部です。 コード全体にわたって、さらに多くのものがあります。 モジュール内の他のウィジェットのほとんども、この同じパターンを使用します。 したがって、1 つのウィジェットがどのように構成されているかを学習すると、リポジトリ内のほとんどのコードがどのように構成されているかを誰でも理解できるようになります。