要求如下,
发布新的web内容(对应于特定结构,例如a)时,它应该在资产发布器portlet(资产发布器的默认功能)上自动更新。
默认情况下,web内容的标题是资产发布器上不同web内容的链接。相反,我希望结构A的元素(比如名称)的内容显示为链接。单击此链接将打开一个Alloy UI弹出窗口,其中包含相应的Web内容。
为了实现这一点,我使用钩子创建了一个新的"显示样式">jsp(调整了摘要.jsp)
在.jsp
:中编写此脚本
<%
String personName=null;
JournalArticle journalArticle=null;
String myContent=null;
Document document = null;
Node node=null;
Node node1=null;
Node node2=null;
Node node3=null;
int noOfWords=0;
String pic=null;
String aboutMe=null;
double version=0;
try {
version=JournalArticleLocalServiceUtil.getLatestVersion(assetRenderer.getGroupId(), "14405");
journalArticle = JournalArticleLocalServiceUtil.getArticle(assetRenderer.getGroupId() , "14405",version);
myContent = journalArticle.getContent();
document = SAXReaderUtil.read(new StringReader(myContent));
node = document.selectSingleNode("/root/dynamic-element[@name='personName']/dynamic-content");
if (node.getText().length() > 0) {
personName = node.getText();
}
node1 = document.selectSingleNode("/root/dynamic-element[@name='pic']/dynamic-content");
if (node1.getText().length() > 0) {
pic = node1.getText();
}
node2 = document.selectSingleNode("/root/dynamic-element[@name='noOfWords']/dynamic-content");
if (node2.getText().length() > 0) {
noOfWords = Integer.parseInt(node2.getText());
}
node3 = document.selectSingleNode("/root/dynamic-element[@name='aboutMe']/dynamic-content");
if (node3.getText().length() > 0) {
aboutMe = node3.getText(). substring(0,noOfWords)+"....";
}
} catch (PortalException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
%>
但是这里articleId
需要硬编码。
我想在发布新的web内容时,即动态发布时,在这里获取articleId
。
这里应该使用哪种API?
感谢您的帮助。
谢谢。
这个方法在最新版本的Liferay-Liferay 6.1.1 CE GA2上适用,但我认为它在以前的版本上也应该不做任何更改。
简单地说,您可以使用AssetEntry实例的getClassPK()方法。
在所有的显示jsp中,您可以获得作为请求属性的资产条目:
AssetEntry assetEntry = (AssetEntry)request.getAttribute("view.jsp-assetEntry");
然后获取与资产分录相关联的期刊文章的最新版本,而不是使用:
double version =
JournalArticleLocalServiceUtil.getLatestVersion(assetRenderer.getGroupId(),
articleId);
JournalArticle journalArticle =
JournalArticleLocalServiceUtil.getArticle(assetRenderer.getGroupId(),
articleId, version);
你可以写:
JournalArticle journalArticle =
JournalArticleLocalServiceUtil.getLatestArticle(assetEntry.getClassPK());
希望这能有所帮助。