数据库中的PortletPreferences表包含系统中每个 portlet 的配置。Web Content Display portlet 的 articleId 配置作为首选项存储在此表中。如果您查看该表,则有 3 个重要列:
- plid包含放置 portlet 的布局 (=page) 的 id。
- portletid包含portlet 的实例ID。对于 Web 内容显示 portlet,此 ID 的格式为 56_INSTANCE_XXXX,其中 XXXX 是唯一的散列。
- 首选项是此 Portlet 的所有首选项及其值的 XML 格式字符串。
首选项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>';