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

问题描述:

我有“Neon - Bootstrap Admin Theme”(https://themeforest.net/item/neon-bootstrap-admin-theme/6434477)。我的职责是将这个引导主题融入Ofbiz 16.11.02。我尝试了3天,但我被困住了。如何从主题文件夹访问资源文件(css,js文件)并从FTL获取链接?

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

我不知道如何访问静态资源文件(CSS,JS,图像)

我有添加更多信息以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文件?

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

<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 ressources用于报头一起存储不同sequenceId的控制相同resourceTypeEnumId下加载顺序。

然后,您可以在战斧主题访问这些ressources在FTL模板,例如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> 

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

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

VISUAL_THEME=TOMAHAWK 
+0

谢谢。但是我的web应用程序仍然会将TOMAHAWK作为会话中的选定主题加载,因此,我的所有努力都没有。如何让webapp将BOOTSTRAP设置为会话中的选定主题? –

+0

我在我的答案中添加了默认主题条目部分,谢谢Deepak :-) –