您好我正在尝试为Asset Publisher portlet创建自定义模板,以显示我的知识库文章。为此,我需要检索
我可以找到标题和日期,但没有办法获取内容。有什么帮助吗?
##
## This template can be used to modify the look of a specific
## application.
##
## Please use the left panel to quickly add commonly used variables.
## Autocomplete is also available and can be invoked by typing "$".
##
#if (!$entries.isEmpty())
#foreach ($curEntry in $entries)
<div>
<p>News 1:<br/>
$curEntry.getTitle($locale) <br />
$curEntry.getCreateDate() <br />
$curEntry.getDescription()<br /></p>
</div>
#end
#end
正如您在上面的代码中看到的,我尝试了“getDescription()”,但它不起作用。
答案 0 :(得分:1)
$curEntry
是AssetEntry
个实例,它不是知识库文章。
您可以使用$curEntry.getClassPK()
使用知识库文章服务检索知识库文章实例。
答案 1 :(得分:1)
如果您在数据库中检查AssetEntry表,您会发现描述列为空,因此您将无法获得所需的任何数据。
您可以使用以下代码获取资产数据:
#foreach ($curEntry in $entries)
Title: $curEntry.getTitle($locale)<br/>
Published date: $entry.getPublishDate()<br/>
Summary: **$entry.getAssetRenderer().getSummary($locale)** <br/>
#end
现在代码如何工作。我们想要的总结,确实在于JournelArticle类(表)。接口AssetRender由类JournalArticleAssetRenderer实现。此类继承getSummary(Locale locale)方法。此方法包含JournetArticle类的对象。
JournelContent obj;
public String getSummary(Locale locale) {
return obj.getDescription(locale);
}
答案 2 :(得分:0)
您可以使用以下代码:
#if (!$entries.isEmpty())
<div class="news">
#foreach ($entry in $entries)
#set($renderer = $entry.getAssetRenderer() )
#set($className = $renderer.getClassName() )
#if( $className == "com.liferay.portlet.journal.model.JournalArticle" )
#set( $journalArticle = $renderer.getArticle() )
#set( $document = $saxReaderUtil.read($journalArticle.getContent()) )
#set( $rootElement = $document.getRootElement() )
#set( $xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='image']") )
#set( $image = $xPathSelector.selectSingleNode($rootElement).getStringValue() )
#set( $link = $renderer.getURLViewInContext($renderRequest, $renderResponse, '') )
<div class="new"">
<h1 class="title">$entry.getTitle($locale)</h1>
<div"><img src="$image" ></div>
<a href="$link">Read More</a>
</div>
#end
#end
</div>
#end