如何让Freemarker基础模板识别子模板设置的变量?
解决Freemarker子模板无法控制父模板页眉显示的问题
问题根源
你当前的代码顺序是先include基础模板,再定义header变量。Freemarker是自上而下逐行执行的,当加载base.ftlh时,header变量还没被赋值,所以会使用默认的true,后续设置的header=false根本不会影响已经执行过的判断逻辑。
修复方案
调整子模板的代码顺序,先定义header变量,再引入基础模板,确保基础模板执行时能读取到你设置的变量值。
修改后的profile.ftlh代码:
<#assign header = false> <#include "/base.ftlh"> <#macro page_title> Profil-Suche </#macro> <#macro page_body> ... </#macro>
验证基础模板逻辑
你的base.ftlh中header!true的写法是正确的(!表示如果变量不存在则使用默认值true),现在变量在include前定义,基础模板就能正确读取到header=false,从而隐藏页眉。
内容的提问来源于stack exchange,提问作者monamona
相关产品推荐
相关产品推荐

