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

Daniel Dekany commented on FREEMARKER-83:
-----------------------------------------

It's outside the scope of this issue, but I plan to implement something like 
{{.to_absolute_template_name(basePath, maybeRelativePath)}}, so that when you 
want to implement something like {{#include}} with a macro using 
{{.caller_template_name}} as the base path, then you don't have to do implement 
the necessary logic in the template language. It's not entirely trivial due to 
absolute paths like {{foo://bar}}.

> Introduce new special variable "outer_template_name" beside 
> "main_template_name"
> --------------------------------------------------------------------------------
>
>                 Key: FREEMARKER-83
>                 URL: https://issues.apache.org/jira/browse/FREEMARKER-83
>             Project: Apache Freemarker
>          Issue Type: Improvement
>          Components: engine
>    Affects Versions: 2.3.27-incubating
>            Reporter: Yanming Zhou
>            Priority: Major
>             Fix For: 2.3.28-incubating
>
>
> for example, a.ftl include b.ftl, b.ftl include c.ftl
> || ||current_template_name||outer_template_name||main_template_name||
> |a.ftl|a.ftl|null|a.ftl|
> |b.ftl|b.ftl|a.ftl|a.ftl|
> |c.ftl|c.ftl|b.ftl|a.ftl|
> I need such feature to resolve relative path like <#include> directive.
> BTW:
> .current_template_name is lazy evaluation, is this designed or bug
> {code:title=b.ftl}
> <#function templateName value>
> <#return value/>
> </#function>
> {code}
> {code:title=a.ftl}
> <#include "b.ftl">
> ${templateName(.current_template_name)}
> {code}
> it will print "b.ftl" not "a.ftl", workaround:
> {code:title=a.ftl}
> <#include "b.ftl">
> <#assign current_template_name=.current_template_name>
> ${templateName(current_template_name)}
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to