layout
freemarker layout主要处理具有相同内容的页面,比如每个网站的header和footer页面。
freemarker 的布局主要常见的两种方式是 #import(“文件路径”) 和 #include(“文件路径”),其中import和include的区别在于,include常用于公共部分的页面,如果要使用<#assign username=“张三”>涉及到内部函数以及变量声明之类的,使用import进行导入,如果在import中的页面含有页面当前将不会进行渲染。 我们编写一个header和footer,其中的header使用include引入,footer页面也使用include引入。(当然freemarker 还有别的布局方式,这里只是介绍一种,请自行学习研究)
- 创建layout布局,格式如下
<#macro name param1 param2 ... paramN>
...
<!-- 嵌套内容 -->
<#nested loopvar1, loopvar2, ..., loopvarN>
...
<#return>
...
</#macro>
实战:
<!-- freemarker layout主要处理具有相同内容的页面,比如每个网站的header和footer页面。-->
<#--layout-->
<#macro layout title keywords description>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>${title!"默认标题"}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!--[if IE]>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'/>
<![endif]-->
<meta name="description" content="${description!}"/>
<meta name="keywords" content="${keywords!}"/>
<meta name="Blog" content="${version}">
<!-- Favicons -->
<link rel="apple-touch-icon-precomposed" href="/favicon.ico"/>
<#--<link rel="apple-touch-icon-precomposed" href="<@resource src=options['site_favicon']/>"/>-->
<link rel="shortcut icon" href="/favicon.ico"/>
<#--<link rel="shortcut icon" href="<@resource src=options['site_favicon']/>"/>-->
</head>
<body>
<!-- header -->
<#include "/_inc/header.ftl"/>
<!-- /header -->
<!-- content -->
<div class="wrap">
<!-- Main -->
<div class="container">
<#nested>
</div>
</div>
<!-- /content -->
<!-- footer -->
<#include "/_inc/footer.ftl"/>
</body>
</html>
</#macro>
- header.ftl内容:
<header>
This is a header,welcome ${name} to my web site!
</header>
- footer.ftl内容:
<footer>
This is a footer,welcome ${name} to my web site!
</footer>
- 创建hello.ftl,并引入公共部分:
<#--引入layout布局-->
<#include "_layout/layout.ftl">
<@layout "${title}" "keywords" "description">
当前版本:${version}
</@layout>
效果
版权声明:本文为qq_45794678原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。