现在的位置: 首页 > 综合 > 正文

使用liferay开发小记

2013年01月23日 ⁄ 综合 ⁄ 共 2708字 ⁄ 字号 评论关闭
使用liferay开发系统时涉及到的对liferay的一些修改信息:
liferay版本4.3.3
1,系统不想使用liferay默认的能自己定制portlet外观信息的选项。
则修改liferay-portal/html/themes/_unstyled/templates下的portlet.vm,并且在
相应的各个风格下面也修改该文件,去掉文件中的$theme.iconConfiguration()。
则在每个portlet上不再有外观样式设置的选项。
2,在对个人或者对社区的页面进行设置时,会发现页面类型。该页面类型由portal.properties属性文件的layout.types属性设定。
3,想去掉我的帐户链接,则可以
修改/html/themes/_unstyled/templates/init.vm文件,去掉我的帐户相关内容。
4,页面设置中很多功能需要屏蔽掉,修改
/portlet/communities/edit_pages.jsp文件即可。
5,如果想用外观样式功能,但想修改配置界面的内容,则可以按自己需要修改
/html/portlet/portlet_css/view.jsp该页面。
6,风格只保留一个.不要其他风格。
修改配置文件liferay-look-and-feel.xml
7,去掉公开页。保留我的公共(页面),
修改页面:/html/taglib/ui/my_places/page.jsp,去掉公开页。去掉页面设置中的公开页设置。
8,在为liferay系统添加内容时,想要字体更大,添加内容的页面出现在页面中间。
则修改js文件,js/liferay/layout_configuration.js,修改toggle方法,width:400,noCeneter:false;这样可以使添加内容的页面显示在整个页面中间。
修改/html/portlet/layout_configuration中的view_category.jsp页面,则可以修改添加内容页面的显示内容和样式。
9,权限达到可看不可用的效果。
设置一些portlet的权限,使某些用户能看而不能添加。修改html/portlet/layout_configuration/view_category.jsp页面。
取得所有的portlet ,而不是用户有权限添加的portlet.
在展示用户添加portlet时,设置不可添加的portlet添加按钮不可用。
10,liferay系统中,如果不通过liferay而修改数据库中的数据,则在liferay系统中不能看到实时更新的效果,因为liferay采用缓存机制。
需要修改持久实现类
service.persistence.××××PersistenceImpl中的对应方法,使用直接查询,而不采用读取缓存的操作,这样才能得到实时更新的数据。
去掉:

Java代码 复制代码
  1. Object result = FinderCache.getResult(finderClassName,  
  2.                 finderMethodName, finderParams, finderArgs, getSessionFactory());  
  3.         FinderCache.putResult(finderClassName, finderMethodName,  
  4.                     finderParams, finderArgs, list);  

在对持久化对象进行更新操作时,会调用下面的代码,所以可以保持在缓存中的对象是最新的。

Java代码 复制代码
  1. FinderCache.clearCache(AICustomerReports.class.getName());  
评论

fly_ever 2008-04-10
恩,你说的也是。
我的第十点主要是说自己写portlet时,由于用到liferay默认的持久层解决方法,所以有时需自己解决缓存的办法。
至于liferay系统的核心实现,肯定也是到处散布了缓存的代码,比如获取页面的portlet集合时,因此需要到对应的代码处修改。
谢谢你的补充
melin 2008-04-09
你的十条,有点不全。
我最近的需求是,写一个portlet。管理portlet和role的关联。更新过后,不能起到效果,一看就是缓存的效果。一开始也是和你所说 的去该,还是缓存了。最后找到PortletLocalServiceImpl中。在_getPortletsPool()中,改为:
//Map portletsPool = (Map)_companyPortletsPool.get(companyIdObj);
System.out.println("-----------"+"test"+"----------------");
Map portletsPool = null;

还有一处:
//_companyPortletsPool.put(companyIdObj, portletsPool);

抱歉!评论已关闭.