[ 
https://issues.apache.org/jira/browse/FREEMARKER-84?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16247632#comment-16247632
 ] 

Daniel Dekany edited comment on FREEMARKER-84 at 11/10/17 3:26 PM:
-------------------------------------------------------------------

We could do Proposal 1 (the others aren't consistent with the logic of FTL).  
Maybe {{.last_include_found}} is a more speaking variable name.

Another approach that's consistent with FTL is adding a new directive, which 
always has nested content:

{code}
<#include_or_fall_back "try-this.ftl" >
  Do this if it wasn't found.
</#include_or_fall_back>
{code}

The result is much terser than Proposal 1, but it adds a new directive, which 
is maybe an overkill.


was (Author: ddekany):
We could do Proposal 1 (the others aren't consistent with the logic of FTL).  
Maybe {{.last_include_found}} is a more speaking variable name.

Another approach that's consistent with FTL is adding a new directive, which 
always has nested content:

{code}
<#include_or_fallback "try-this.ftl" >
  Do this if it wasn't found.
</#include>
{code}

The result is much terser than Proposal 1, but it adds a new directive, which 
is maybe an overkill.

> Improve include directive to detect whether template exists
> -----------------------------------------------------------
>
>                 Key: FREEMARKER-84
>                 URL: https://issues.apache.org/jira/browse/FREEMARKER-84
>             Project: Apache Freemarker
>          Issue Type: Improvement
>          Components: engine
>    Affects Versions: 2.3.27-incubating
>            Reporter: zhouyanming
>
> I requested feature `ignore_missing=true` of <#include> and freemarker have 
> implemented it, but it cannot handle fallback like
> {code}
> <#assign path="relative.ftl">
> <#if isTemplatePresent(path)>
> <#include path>
> <#else>
> template "${path}" is not exists
> </#if>
> {code}
> Proposal 1:
> Introduce a new special variable like "template_included" similar to "$?" of 
> shell exit code
> {code}
> <#include path ignore_missing=true>
> <#if !.template_included>
> template "${path}" is not exists
> </#if>
> {code}
> Proposal 2:
> Add an argument like "template_included" for include directive
> {code}
> <#include path ignore_missing=true template_included="pathExists">
> <#if !pathExists>
> template "${path}" is not exists
> </#if>
> {code}
> Proposal 3:
> Introduce a new special directive such as <#missing> similar to html 
> <noscript> tag
> {code}
> <#include path>
> <#missing>
> template "${path}" is not exists
> </#missing>
> </#include>
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to