[ 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)