Liferay门户网站6.2 - 用于显示知识库文章的资产发布者模板

时间:2013-12-11 09:19:46

标签: templates liferay velocity

您好我正在尝试为Asset Publisher portlet创建自定义模板,以显示我的知识库文章。为此,我需要检索

  1. 条目标题
  2. 参赛内容
  3. 创建日期
  4. 我可以找到标题和日期,但没有办法获取内容。有什么帮助吗?

    ##
    ## 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()”,但它不起作用。

3 个答案:

答案 0 :(得分:1)

$curEntryAssetEntry个实例,它不是知识库文章。

您可以使用$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