Hookを作る
さて、いよいよ検索機能を作りましょう。今回はWeb Contentsのみの検索を行うので、標準機能の「Web コンテンツの検索」機能を拡張することにします。Liferayでは標準機能を拡張するのに、Hook(フック)という仕組みがあります。これにより、Liferayが搭載する基本機能のポートレットに、追加機能を加えたり、変更することができます。
該当のパースペクティブを開きますか、というダイアログがでるのでYesと答えると、Web Content Search-hookというプロジェクトがPackage Exploreに表示されます。それを右クリックして、Hookを作成します。
次にCustom JSP’sを選択しNextを押下
Add from Liferayボタンを選択します。

Liferay Custom JSPというダイアログが表示されるので、ここで今回
/html/taglib/ui/journal_content_search/start.jsp
を指定してください。そうすると、custom_jspというディレクトリがdocroot以下に作成され、該当のjspが作成されます。このcustom_jsp以下のjspファイルが、Liferay本体のポートレットの動作をオーバーライド(上書き)します。
start.jspの中身は、添付ファイルのstart.jspで上書きしてください。上書き後、start.jsp内の#REPLACE_THIS_TO_YOUR_STRUCTURE_IDを、使用しているストラクチャーIDに置換してください。
次に、メッセージの表示が英語のままになってしまうので、言語ファイルを作成します。再び、Package Explore 内のWeb Content Search-hookの上で右クリックして、「Liferay Hook Configuration」を選択します。
次にLanguage Propertiesを選択しNextを押下、「Add」ボタンを押下して、Language.propertiesと、Language_ja.propertiesという2つのファイル名を追加、Finishボタンを押下すると、ファイルが生成されます。次に、その中身を、添付ファイルのLanguage.propertiesと、Language_ja.propertiesの中身をそれぞれ同名のファイルの中にコピーします。
次に、Package ExplorerのWeb Content Search-hookをServersに作成してあるサーバー(筆者の場合はLiferay v6.2 CE Server (Tomcat 7) at localhost)にドラッグ&ドロップします。するとHookがサーバーにデプロイされます。
いったんデプロイされた後は、ファイルを変更するたびに、Liferayのホットデプロイ機構が変更を感知して自動的にデプロイしてくれるのですが、変更が反映されなかったりする時があるので、その際はLiferay v6.2 CE Server (Tomcat 7) at localhostの下にデプロイされたWeb Content Search-hookの上で右クリックして、Redeployを選択すると、強制的にデプロイされます。
デプロイし終わると、以下のような画面になるはずです。
Liferayにはもう一つ、Extプラグインという、Liferayのほぼ全機能を変更可能なプラグインがあります。しかし、このプラグインはバージョンアップを考慮していないため、バージョンアップの際にコードの不整合が発生します。よほどのことがない限り使用は避けてください。拡張性、メンテナンス性を考えても、Hookを使うことを最初に考えるのがベストプラクティスです。



