3

などinit_custom.vmの速度ファイルの liferay テーマでカスタム サービス メソッドを使用する方法。portal_normal.vm

liferay は$portalUtilfor PortalUtil$getterUtilforなどのヘルパー ユーティリティ クラスの多くの変数をファイルGetterUtil内に提供しているようです。init.vm

com.my.custom.service.MyCustomLocalServiceImplでは、liferayのインスタンスやサービスのようなカスタム サービスのインスタンスを から取得することは可能UserLocalServiceImplですか?

必要なものを理解するための疑似コードを次に示します。

// this code calls method from MyCustomLocalServiceImpl class to fetch items
#set ($listOfItems = $myCustomLocalServiceUtil.getAllItems())

// this code calls method from UserLocalServiceImpl class to fetch users
#set ($listOfUsers = $userLocalServiceUtil.getUsers(0, 99))

環境: Liferay 6.1 CE GA1

4

2 に答える 2

7

可能です。

  1. 次のコードは、サービスを取得する方法を示しています。

    // Fetching instance of my custom services
    #set ($myCustomLocalService = $serviceLocator.findService('myCustomServices-portlet', 'com.my.custom.service.MyCustomLocalService'))
    
    // Fetching instance of UserLocalServiceImpl
    #set ($userLocalService = $serviceLocator.findService('com.liferay.portal.service.UserLocalService'))
    
  2. 次に、サービス メソッドを呼び出すだけです。

    #set ($listOfItems = $myCustomLocalService.getAllItems())
    
    #set ($listOfUsers = $userLocalService.getUsers(0, 99))
    

Liferay 6.1 CE GA1 の場合:実際にすべての変数とヘルパー ユーティリティを速度テンプレートで使用できるようにするこのクラス ( 、VelocityVariablesImplなどのメソッドを参照) を見つけました。insertHelperUtilitiesinsertVariables

于 2012-08-21T11:32:47.790 に答える
3

次のフック プラグインを使用して、テーマで使用されるベロシティ コンテキストをカスタム変数とサービスで拡張できます。カスタム ローカル サービスを使用する必要があるとします。

  1. 次のliferay-hook.xml定義でフックプラグインを作成します

    <hook>
        <portal-properties>portal.properties</portal-properties>
    </hook>
    
  2. (maven を使用する場合) または(プラグイン sdk を使用する場合) にportal.propertiesを作成し、そこに次の構成を配置します。main/resourcesdocroot/WEB-INF/src

    servlet.service.events.pre=com.my.custom.action.MyCustomPreAction
    
  3. com.my.custom.action.MyCustomPreAction拡張するフックにクラスを作成しますcom.liferay.portal.kernel.events.Action

  4. 実装run方法

    @Override
    public void run(final HttpServletRequest request, final HttpServletResponse response)
        throws ActionException {
    
        Map<String, Object> vmVariables = (Map<String, Object>) request.getAttribute(WebKeys.VM_VARIABLES);
        if (vmVariables == null) {
          vmVariables = new HashMap<String, Object>(1);
        }
        vmVariables.put("myCustomServiceUtil", com.my.custom.service.MyCustomLocalServiceUtil.class);
        request.setAttribute(WebKeys.VM_VARIABLES, map);
    }
    
  5. フックがデプロイされた後、テーマの速度テンプレートでカスタム サービスを使用できます

    // this code calls method from MyCustomLocalServiceImpl class to fetch items
    #set ($listOfItems = $myCustomServiceUtil.getAllItems())
    
于 2014-12-18T19:23:38.050 に答える