繁体   English   中英

如何在LifeRay 6.2中添加资产发布者配置选项

[英]How to add asset publisher configuration options in LifeRay 6.2

使用资产发布者时,您可以在资产发布者配置面板中更改“ 显示设置” 如果选择摘要显示模板 ,则可以使用新选项( 抽象长度 )。 如何在我的应用程序显示模板(ADT)中添加这样的选项?

摘要模板的示例:

在此输入图像描述

我的自定义模板示例(抽象长度不可用):

在此输入图像描述

您可以在为新闻资产发布者构建的ADT内部编写的速度代码中使用子字符串,检查下面的代码仅显示关于我们页面的100个字符

#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='country-portal-image']") )
        #set( $countryPortalImage = $xPathSelector.selectSingleNode($rootElement).getStringValue() )

        #set( $xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='country-portal-title']") )
        #set( $countryPortalTitle = $xPathSelector.selectSingleNode($rootElement).getStringValue() )

        #set( $xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='country-flag-icon']") )
        #set( $countryFlagIcon = $xPathSelector.selectSingleNode($rootElement).getStringValue() )

        #set( $xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='country-portal-about-us']") )
        #set( $countryPortalAboutUs = $xPathSelector.selectSingleNode($rootElement).getStringValue().substring(0,100) )


        #set( $link = $renderer.getURLViewInContext($renderRequest, $renderResponse, '') )
        #set( $viewURL = $assetPublisherHelper.getAssetViewURL($renderRequest, $renderResponse, $entry))

        #set($news-summary =$entry.getSummary($locale))
         #set($date = $dateTool.format("dd/MM/yyyy hh:mm:ss", $dateTool.toDate( "EEE, dd MMM yyyy hh:mm:ss Z" , $entry.getPublishDate())))
        <div class="new">
            <h1 class="title">$entry.getTitle($locale)</h1>
            $date
                 <img src="$countryFlagIcon"/> 
                <img src="$countryPortalImage"/> 
                <h3 class="sub-title">$countryPortalAboutUs</h3>
            <p class="read-more">
                <a href="$viewURL">Read More</a>
            </p>
        </div>
    #end
#end
</div>
#end

您可以创建JSP挂钩来自定义Asset Publisher配置。

原始配置由/html/portlet/asset_publisher/configuration.portal.jsp呈现。

在您的钩子中,您可以包含原始jsp,然后添加您自己的首选项。

例:

<%-- Include the original Asset Publisher configuration JSP. --%>
<%@include file="/html/portlet/asset_publisher/configuration.portal.jsp"%>

<%-- Read current value from portlet preferences. --%>
<% String abstractLength = portletPreferences.getValue("abstractLength", "100"); %>

<%-- Hidden div with custom input fields. --%>
<div id="customPreferences" style="display: none;">
    <aui:fieldset label="fieldset.abstractLength">
        <aui:input name="abstractLength" label="abstractLength" value="<%= abstractLength %>">
            <aui:validator name="number"/>
            <aui:validator name="min">1</aui:validator>
        </aui:input>
    </aui:fieldset>
</div>

<%-- JS code to place custom preferences at the end of Display Settings tab. --%>
<%-- It uses jQuery, but it's not a requirement. --%>
<script>
    $(document).ready(function () {
        // find div with custom preferences
        var $customPreferences = $("#customPreferences");
        // find the last fieldset on Display Settings tab
        var displaySettingsLastFieldset = $(".nav-tabs:eq(1)").siblings("div:eq(1)").children().filter("fieldset").last();
        // insert custom preferences after the last fieldset on Display Settings tab
        $customPreferences.insertAfter(displaySettingsLastFieldset);
        // show custom preferences
        $customPreferences.show();
    });
</script>

这是扩展原始JSP的好方法 - 即。 包括原始,然后进行自定义。 通过这种方式,可以轻松更新下一个Liferay版本。

有关如何实现JSP挂钩的一般准则,请参阅Liferay Developer's Guide

您可以使用以下命令获取资产发布者ADT可用的所有可用portletPreference值的列表:

<#list portletPreferences?keys as prop >
    <li>
        ${prop}
    </li>
</#list>

因此,对于您的示例,您可以使用以下方式获取用户设置的抽象长度值:

abstractLength: ${portletPreferences.abstractLength[0]}

如果您创建自己的ADT然后在ADT中管理内容长度而不是不必要地挂钩AP jsp,那么最好的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM