Liferay新注册用户缺省页面的研究
Liferay新注册用户缺省页面的研究
关于新用户的缺省页面,最核心的代码是在com.liferay.portal.events.ServicePreAction类中的addDefaultLayout(User user)和getDefaultLayout(User user, boolean signedIn)。
12.1 源代码阅读
这部分代码,代码量并不大,大家可以自行阅读一下。代码的意思,大致总结如下:
1、在run()中,判断用户是否有Power User角色,如果有,则调用addDefaultLayout。
2、在addDefaultLayout中,判断用户是否已经有自己的Community,如果没有,就会读取参数default.user.layout.name、default.user.layout.template.id等进行创建,并设置各个column_id的portlet。
3、判断是否已经有自己的Community,实际上是在判断userGroup的Community。
4、然后,在getDefaultLayout获取应该显示的Layout。如果指定了layout,就现实制定的layout;否则,登录用户,检查有权限的私有layout;否则,检查公共layout。
从这个流程可以看出,可以从几个角度来入手解决这个问题:
1、 从用户角色入手,不给新用户Power User角色。
2、 通过配置文件,设置新用户的layout,以及各个column的portlet清单。
3、 大动手术,直接重载ServicePreAction类
12.2 从用户角色着手解决的方案
在Enterprise这个Portlet中,选择"用户"这个Tab,然后是Default Community And Roles,里面,把Power User删掉,并保存。
然后重新注册的用户,缺省就不会创建新的Community。同时,又没有分配其他Community给他,因此他只有一个Guest这个Community是可用的,登陆之后也会回到缺省页面。
这种方案适用于:普通登录用户没有其他的功能,主要还是在Guest这个Community。www.liferay.com应该就是采用这种处理方式。
考虑到多数情况下,除了公共页面,我们还需要给用户一些私有的页面。这时,我们可以创建一个私有的Community如Blog,在这个Community中创建若干的Layout,并且添加好portlet。作为设计的所有注册用户的缺省登录后的页面。然后,管理员在Enterprise这个Portlet中,选择"用户"这个Tab,然后是Default Community And Roles,里面,在Community这个Textarea里面,输入把Blog这个Community名字,并保存。
这样,新注册的用户,登陆之后,就会显示Blog这个Community。
这个方案的关键设置,就是在Default Community And Roles里面。两点:一、新注册用户缺省没有Power User权限;二、新注册用户,缺省可以访问设置的私有Community。
12.3 从配置文件着手解决的方案
在portal.properties中有几个重要的配置参数,分别是
default.user.layout.name=Home
default.user.layout.template.id=2_columns_ii
default.user.layout.column-1=82,23,61,65,
default.user.layout.column-2=8,11,36,33,
default.user.layout.column-3=
default.user.layout.column-4=
default.user.layout.template.id:页面的布局
default.user.layout.column-?:每一个column中有哪些portlet。具体含义,自己开发过Layout的话,就很容易理解。
我们的工作也就相对简单了,只需要定制这两个参数即可。比如,我想在第二栏的最开始,放一个Calculator Portlet,那只需要设置为
default.user.layout.column-2=13,8,11,36,33,
注意:Liferay不建议我们直接修改portal.properties文件,因此需要把这些参数拷贝到portal-ext.properties中进行修改。
这个方法的问题也比较明显:对于哪些需要设置Preference才能正常工作的portlet,这种方法就不好使。比如ID为56的Portlet "Journal Content",是Liferay的使用最频繁的portlet,但这种方法,不能为其设置所选择的文章。这个问题,我没有找到比较好的解决方法。
曾经尝试在配置文件中直接写portlet的实例名,但不成功,仍然是未设置状态。
这个方案适用于:每个用户需要有自己的工作台,并且工作台的内容并不是以内容呈现为主。
12.4 重载ServicePreAction类的方案
这个方案,应该是最灵活的一个方案了,当然对开发技术以及对Liferay的底层知识有较高要求。有兴趣的可以自行研究,我仅简单说说如何重载。
1、 在ext环境中创建一个新类,并派生自ServicePreAction。然后重新实现方法addDefaultLayout(User user)。在里面做自己想做的任何事情。例如新类的全名为com.ext.portal.events.ServicePreExtAction
2、 在portal-ext.properties中添加一行
servlet.service.events.pre=com.ext.portal.events.ServicePreExtAction
Liferay新注册用户缺省页面的研究相关推荐
- 安卓案例:注册用户免启动时的广告页面
安卓案例:注册用户免启动时的广告页面 非注册用户启动安卓应用时,会首先弹出一个广告页面,停留一分钟,然后关闭进入主界面.注册用户就可以免掉广告页面的骚扰.下面我们通过简单的案例来说明如何实现这样一个效 ...
- WordPress发布新文章Email通知注册用户
很多WordPress博客都开放了用户注册的功能,用户可以参与到博客的内容建设当中来,也就是一个博客由多个用户来写.现在有这样的需求,如何实现在某一个用户发表文章后,其他用户都能收到Email通知?下 ...
- Tomcat应用部署:打war包、在Tomcat中注册用户角色、创建虚拟目录和域名
#1.打war包 1)命令:jar -cvf xx.war * (备注:执行打包的前提条件:目录必须切换到打包项目的webRoot(webContent)目录下) 备注:1. c:创建新的文档v:显示 ...
- Zoom暂停中国个人用户注册,已免费注册用户仅限于加会使用
5月19日,据国外媒体报道,视频会议平台Zoom已经暂停中国个人用户注册. ▲图片截至zoom.com.cn首页 如图所示,Zoom目前暂停了中国新用户注册,而已有的免费注册用户将从5月1日零时起仅限 ...
- Web.config中注册用户控件和自定义控件
在ASP.NET 的早先版本里,我们通过在页面的顶部添加 <%@ Register %> 指令来引入和使用自定义服务器控件和用户控件时,象这样: <%@ Register TagPr ...
- 小新计算器用户使用协议
小新计算器用户使用协议 感谢您使用小新计算器app.当您按照注册页面提示填写信息.阅读并同意本协议且完成全部注册程序后,即表示您已充分阅读.理解并接受本协议的全部内容,并与我们达成一致,成为我们的用户 ...
- beego model获取controller_Goweb开发-Beego框架实战教程:项目搭建及注册用户
一.搭建项目 首先打开终端进入gopath下的src目录,然后执行以下命令,创建一个beego项目: bee new myblogweb 运行效果如下: 然后通过goland打开该项目: 我们打开co ...
- bilibili怎么用用户名登录_b站(bilibili)注册用户数量总共有多少?如何通过uid搜索用户名?...
一.b站注册用户数量多少的分析 B站拜年祭播放量近一千五百万,这里定义为B站活跃用户.截止现在8.20,B站总注册量为3亿6147万左右,去除许多因素估计B站用户有3亿人.所以B站目前可以说有3亿用户 ...
- 黑马旅游网-注册用户(二)
目录 一.注册用户-业务流程分析 1.页面效果 2.业务流程分析 二.注册用户-前端功能实现 修改register.html 1.校验用户名 2.校验密码 3.检验邮箱 4.使用ajax提交数据 5. ...
最新文章
- Java封装OkHttp3工具类
- 区块链相关论文研读2 - vChain,关于可验证的查询
- 拉勾教育专栏文章转markdown
- mysql 5.6 cmake 安装_Cmake MySQL5.6 编译安装
- 学习《apache源代码全景分析》之存储段和存储段组摘录
- 全国教学交流研讨会“教学为本”主题总结
- How do I enable core dumps for everybody
- java 控件汉字显示方格
- ON_EVENT 报错
- CF949 简要题解
- 【windows屏幕扩展】把你多余屏幕利用起来,spacedesk屏幕扩展超低延迟解决方案
- nvivo三天写论文!可视化操作实战
- YOLOv3学习——锚框和候选区域
- 主码、候选码与外码的区别
- asp.net监听输入框值的即时变化onpropertychange、oninput
- Unity 制作愤怒的小鸟
- linux搭建泰拉瑞亚(Terraria)服务器
- 走进麻省理工Media Lab,看AR技术如何改变课堂教育?
- This beta version of Typora is expired,please download and install a newe最新解决方案
- 网络安全工程师待遇 网络安全工程师需要学什么
热门文章
- DataEase看中国:数据呈现中国农业经济发展情况
- 基于Python的工厂模式学习总结
- 超级计算机使用什么操作系统,多数超级计算机使用操作系统为Linux
- 兔八哥笔记13:我的2003
- HiveServer2 频繁宕机根本原因分析
- ug10许可证错误一8_企业ISP许可证年检时要注意哪些问题
- PMPtiku项目管理第六版项目经理的领导力风格
- 黑超级计算机,超级计算机模拟太阳黑子真面目(图)
- 分享一个强大资源网站整合
- 论文学习:Lip Reading-Based User Authentication Through Acoustic Sensing on Smartphones