如何修改资产发布器portlet上显示的链接



要求如下,

发布新的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());

希望这能有所帮助。

相关内容

  • 没有找到相关文章