首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Liferay中获取包含web内容的portlet/页面

在Liferay中获取包含web内容的portlet/页面
EN

Stack Overflow用户
提问于 2011-12-06 09:27:52
回答 2查看 4.2K关注 0票数 1

我试图让Liferay (6.0.6) Asset在门户主页上发布跨越多个社区的所有更改。通过单击链接,用户应该被重定向到另一个社区,并查看新的web内容。问题是,资产发布者的默认行为(即使是从所有社区收集信息的钩子)试图通过搜索当前页面的组(其中没有内容)来获取url。我决定更改显示页面的jsp,以搜索所有社区的所有页面,并找到第一个包含具有所需web内容的portlet的页面。所以

  1. 如何通过web内容的日志id获得包含web内容的portlet?
  2. 如何获得包含portlet的页面?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-08 15:14:12

数据库中的PortletPreferences表包含系统中每个portlet的配置。的articleId配置作为首选项存储在此表中。如果您查看该表,有三个重要的列:

  • plid包含portlet所在的布局(=页面)的id,dropped.
  • portletid包含portlet的实例id。对于,该ID具有56_INSTANCE_XXXX格式,其中XXXX是唯一的56_INSTANCE_XXXX,是该portlet的所有首选项及其值的XML格式化字符串。

首选项XML的一个示例:

代码语言:javascript
复制
<portlet-preferences>
    <preference><name>group-id</name><value>10139</value></preference>
    <preference><name>article-id</name><value>14295</value></preference>
</portlet-preferences>

因此,这只是一个使SQL查询正确的问题。据我所知,没有任何服务可以直接呼叫。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2014-12-11 11:02:45

下面这样的内容允许您找到呈现项目的布局。

代码语言:javascript
复制
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);
  ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8397679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档