我试图让Liferay (6.0.6) Asset在门户主页上发布跨越多个社区的所有更改。通过单击链接,用户应该被重定向到另一个社区,并查看新的web内容。问题是,资产发布者的默认行为(即使是从所有社区收集信息的钩子)试图通过搜索当前页面的组(其中没有内容)来获取url。我决定更改显示页面的jsp,以搜索所有社区的所有页面,并找到第一个包含具有所需web内容的portlet的页面。所以
谢谢
发布于 2011-12-08 15:14:12
数据库中的PortletPreferences表包含系统中每个portlet的配置。的articleId配置作为首选项存储在此表中。如果您查看该表,有三个重要的列:
首选项XML的一个示例:
<portlet-preferences>
<preference><name>group-id</name><value>10139</value></preference>
<preference><name>article-id</name><value>14295</value></preference>
</portlet-preferences>因此,这只是一个使SQL查询正确的问题。据我所知,没有任何服务可以直接呼叫。
SELECT l.friendlyURL
FROM PortletPreferences p, Layout l
WHERE p.plid=l.plid
AND p.portletid LIKE '56_INSTANCE_%'
AND p.preferences LIKE '<preference><name>article-id</name><value>14295</value></preference>';发布于 2014-12-11 11:02:45
下面这样的内容允许您找到呈现项目的布局。
List<Long> layoutIds = JournalContentSearchLocalServiceUtil.getLayoutIds(groupId, false, articleId);
long layoutId = 0;
if (!layoutIds.isEmpty()) {
layoutId = layoutIds.get(0).longValue();
Layout layout = LayoutLocalServiceUtil.getLayout(groupId, false, layoutId);
String url = PortalUtil.getLayoutURL(layout, themeDisplay);
...
}https://stackoverflow.com/questions/8397679
复制相似问题