您的位置:首页 > Web前端

liferay ga6主题工程研究随笔

2017-01-09 19:36 169 查看
Liferay主题

注意:我使用的liferay ga6环境,主题工程创建时的配置选项为

一、在liferay主题(Theme)的编写中,如果要在portal_normal.vm中导入js或css包(例如jQuery包),可以使用以下两种方法:

1、<script type="text/javascript" src="${javascript_folder}/jquery-1.9.0.js"></script>

2、<script type="text/javascript" src="$themeDisplay.getPathThemeJavaScript()/jquery-1.9.0.js"></script>

它们的路径相当于http://localhost:8080/test-theme/js

类似的还有$themeDisplay.getPathThemeImages()

其实最好的是在liferay编辑器中使用【Ctrl】+【Shift】+【R】,然后搜索init.vm

二、$themeDisplay.getLanguageId() 获取语言类型

这个语言类型指的是门户网站cookie中,名为GUEST_LANGUAGE_ID的值,例如简体中文为zh_CN,美国英语为en_US

三、在主题中自定义变量

1、在主题工程WEB-INF下liferay-look-and-feel.xml文件中设置

在主题工程的liferay-look-and-feel.xml文件中找到你要修改的项目,在<theme>中加入以下内容

<settings>

   <setting configurable='true' key='portlet-setup-show-borders-default' type='checkbox' value='false'>

   </setting>

</settings>

上面这个实例是liferay自带的,作用是是否显示liferay页面中portlet的边框

你也可以使用自定义的,如下:

<settings>

    <setting configurable='true' key='portlet-setup-show-borders-default' type='checkbox' value='false'>

    </setting>

    <setting configurable='true' key='isDisplay' type='text' value='false'>

    </setting>

</settings>

第一个用的是复选框,第二个用的是文本框

2、将你在liferay-look-and-feel.xml中配置的值在主题或portlet中引用

在主题中引用:

在portal_normal.vm中通过$themeDisplay.getThemeSetting('isDisplay')可以获取管理员在页面中选取或输入的值,

eg.     #if($themeDisplay.getThemeSetting('isDisplay') == 'false')

       <style>

          .aui .dockbar-split .dockbar.navbar-static-top .collapse .nav-account-controls{display:none;}

       </style>

    #else

       <style>

          .aui .dockbar-split .dockbar.navbar-static-top .collapse .nav-account-controls{display:block;}

       </style>

    #end

上面的示例首先获取管理员输入的值,然后设置主题样式,从而控制liferay页面右上角的蓝色操作条是否显示。

四、主题中使用自己定义的类的方法

1、在portal_normal.vm的某一个位置,最好是文件的开头添加下面的语句

#set($bookService=$serviceLocator.findService("xxx-portlet(这里的值为portlet名)","com.xyong.portlet.demo.service

.BookLocalService(这里的值为该portlet的接口)"))

2、在你想使用导入类某一方法处,使用 $bookService.getBooks('')    //这里为具体方法名

注意:若是自己定义的portlet,则需要第一个参数(portlet名);若为liferay自带的,则不需要第一个参数(portlet名)

五、主题中显示用户信息

liferay数据库中,自带有欢迎xxx之类的信息,可以直接取用,而不需要自己编写,具体的在init.vm中,那都是liferay定义

好了的变量。

六、在主题中嵌入liferay自带的portlet

比如想在liferay主题中嵌入liferay自带的语言选择portlet。

1、你需要获取该portlet的ID,例如语言选择组件的id为p_p_id_82_ ,导航组件的id为p_p_id_71_INSTANCE_KNHYDs33J9DI_

2、在主题你通过 $theme.runtime("82") 可以引用你想引用的liferay自带portlet,参数的值为组件id的编号。

$theme.runtime("82")引用的是语言选择组件,$theme.runtime("71")引用的是导航组件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: