我正在尝试让Liferay(6.0.6)Asset Publisher在门户网站主页上的多个社区中发布所有更改。通过单击链接,用户应该被重定向到另一个社区并查看新的Web内容。问题是资产发布者的默认行为(即使是从所有社区收集信息的钩子)试图通过搜索当前页面的组(其中内容不是)来获取URL。 我决定更改显示页面的jsp以搜索所有社区中的所有页面,并找到包含具有所需Web内容的portlet的第一个页面。所以
由于
答案 0 :(得分:1)
数据库中的 PortletPreferences 表包含系统中每个portlet的配置。 Web Content Display portlet的articleId配置作为首选项存储在此表中。如果查看该表,则有3个重要的列:
首选项 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>';
答案 1 :(得分:0)
如下所示,您可以找到文章呈现的布局。
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);
...
}