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")引用的是导航组件。
注意:我使用的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")引用的是导航组件。
相关文章推荐
- liferay6.2 ga6主题工程研究随笔
- Liferay5.1.2主题研究(一)
- Liferay5.1.2主题研究(二)
- android 学习随笔十九(对话框、样式、主题、国际化 )
- MQTT的学习研究(四)moquette-mqtt 的使用之mqtt Blocking API客户端订阅并接收主题信息
- Liferay研究之二:引入Spring
- Liferay研究之五:Liferay的MDA开发模式
- 基于主题的Web信息采集技术研究(三)
- 自定义控件主题使用研究
- 有关Theme(主题)的研究——Silverlight学习笔记[31]
- liferay ide创建主题,有时候就报错Exception in thread java.lang.StackOverflowError
- Liferay研究之廿三:JSP中可直接引用的Liferay对象
- JAVA 逆向工程技术研究日志
- 人脑工程研究进展
- 在Liferay7.0中创建 common 工程
- Liferay Portal额外研究(一):初步在新Tomcat下部署
- iOS工程中的info.plist文件的完整研究
- Liferay研究之十六:FCKeditor如何插入服务器上的资源?
- 基于主题的Web 信息采集技术研究(四)
- 研究一种应用于工程机械的智能监控系统