liferay ga6主题工程研究随笔

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")引用的是导航组件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值