如何访问资源文件(主题文件夹中的css,js文件)并从FTL获取链接?

时间:2017-06-15 08:28:59

标签: twitter-bootstrap ofbiz

我有“Neon - Bootstrap Admin Theme”(https://themeforest.net/item/neon-bootstrap-admin-theme/6434477)。我的职责是将这个引导主题整合到Ofbiz 16.11.02中。我试了3天,但我坚持了。

这是我的完整源代码:https://gitlab.com/Donhu/ofbiz 我一直在创建一个新的主题,名为“BOOTSTRAP”,基于主题“TOMAHAWK”。enter image description here

我不知道如何访问静态资源文件(css,js,image)

我已向https://gitlab.com/Donhu/ofbiz/blob/master/framework/common/config/CommonEntityLabels.xml添加了更多信息 https://gitlab.com/Donhu/ofbiz/tree/master/themes/bootstrap(第一步,我从TOMAHAWK克隆)。

这些文件(https://gitlab.com/Donhu/ofbiz/tree/master/themes/bootstrap/webapp/bootstrap/assets)来自“Neon - Bootstrap Admin Theme”。我不知道如何访问,如何获取其相关链接,并放入FTL文件(例如:https://gitlab.com/Donhu/ofbiz/blob/master/themes/bootstrap/template/Header.ftl#L47当前,它不起作用)

<#if layoutSettings.VT_HDR_JAVASCRIPT?has_content>
    <#list layoutSettings.VT_HDR_JAVASCRIPT as javaScript>
        <script src="<@ofbizContentUrl>${StringUtil.wrapString(javaScript)}</@ofbizContentUrl>" type="text/javascript"></script>
    </#list>
</#if>

我的问题:如何从自定义主题文件夹访问静态文件,把它放到FTL文件?

1 个答案:

答案 0 :(得分:1)

主题资源的文件路径存储在主题数据中,例如:

<VisualThemeResource visualThemeId="TOMAHAWK" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/images/jquery/plugins/asmselect/jquery.asmselect-1.0.4a-beta.js" sequenceId="05"/>
<VisualThemeResource visualThemeId="TOMAHAWK" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/images/jquery/plugins/datetimepicker/jquery-ui-timepicker-addon.min-1.4.3.js" sequenceId="07"/>
<VisualThemeResource visualThemeId="TOMAHAWK" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/images/jquery/plugins/fjTimer/jquerytimer-min.js" sequenceId="09"/>
<VisualThemeResource visualThemeId="TOMAHAWK" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/images/jquery/plugins/jquery.maskedinput-1.3.1.min.js" sequenceId="10"/>
<VisualThemeResource visualThemeId="TOMAHAWK" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/images/jquery/plugins/jeditable/jquery.jeditable.js" sequenceId="11"/>
<VisualThemeResource visualThemeId="TOMAHAWK" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/images/jquery/plugins/validate/jquery.validate.min.js" sequenceId="12"/>

在这种情况下,标题的所有Javascript资源都存储在具有不同sequenceId的相同resourceTypeEnumId下,以控制加载顺序。

然后,您可以在ftl模板中访问这些资源,例如Tomahawk主题中的Header.ftl:

<#if layoutSettings.VT_HDR_JAVASCRIPT?has_content>
    <#list layoutSettings.VT_HDR_JAVASCRIPT as javaScript>
        <script src="<@ofbizContentUrl>${StringUtil.wrapString(javaScript)}</@ofbizContentUrl>" type="text/javascript"></script>
    </#list>
</#if>

它们在标题中呈现如下:

<script src="/images/jquery/plugins/asmselect/jquery.asmselect-1.0.4a-beta.js" type="text/javascript"></script>
<script src="/images/jquery/plugins/datetimepicker/jquery-ui-timepicker-addon.min-1.4.3.js" type="text/javascript"></script>
<script src="/images/jquery/plugins/fjTimer/jquerytimer-min.js" type="text/javascript"></script>
<script src="/images/jquery/plugins/jquery.maskedinput-1.3.1.min.js" type="text/javascript"></script>
<script src="/images/jquery/plugins/jeditable/jquery.jeditable.js" type="text/javascript"></script>
<script src="/images/jquery/plugins/validate/jquery.validate.min.js" type="text/javascript"></script>

ressources必须存储在/ themes / theme-name / webapp / theme-name /子文件夹中,如/ images,/ css等。当然,您可以指定不同的子文件夹布局并相应地更改VisualThemeResource条目。 / p>

如果当前用户没有VISUAL_THEME UserPreference记录,则默认主题取自general.properties文件。在这里,您可以设置新的默认主题:

VISUAL_THEME=TOMAHAWK