在这个单元中我们将看到如何使用模板标签系统构造一个标准的模板页面。这个例子我们使用了一个简单的HTML页面布局,请看下图:
这个页面有多个标准单元组成,就像页面设计者和开发者熟悉的那样.这个页面的主体由3个包含的单元组成:页眉,页内容主体和页脚.我们现在就看看这些单元并且了解如何使用模板标签系统来实现.
页主体
下面的代码单元显示的是主体:
The Page Body Layout
1
<@ saleMonth = data.getValueBean('SALE_MONTH') @>
<@ saleTitle = data.getValueBean('SALE_TITLE') @>
<@ dealHeading = data.getValueBean('DEAL_HEADING') @>
<@ salesAreaID = "Central District" @>
<html>
<head>
<link type='text/CSS' href="https://www.jb51.net/article/style/pageStyles.css"/>
<title>
2 <@ =viewConfig.getAppTitle @>
</title>
</head>
<body>
<table>
<!-- PAGE HEADER -->
<tr>
<td>
<!-- including the page header component -->
<!-- The base template base directory is "./tpl" -->
3 <@ include 'pageHeader.ssp' @>
</td>
</tr>
<!-- PAGE CONTENTS -->
<tr valign='top'>
<td>
<!-- including the page contents component -->
4 <@ include 'sale/pageContent.ssp' @>
</td>
</tr>
<!-- PAGE FOOTER -->
<tr>
<td>
<!-- including the page footer omponent -->
5 <@ include 'pageFooter.ssp' @>
</td>
</tr>
</table>
</body>
</html>
1:页声明
第一个有趣的条目是页顶部的页声明(1).我们在页面开始声明了这些变量,因此这些变量将能在下面的页面和像页眉那样的包含页所使用.
2:页标题
下一步我们使用表达式来初始化页面标题(2).这个值能够从配置文件中view-resources元素利用ViewResourcesConfig->getAppTitle来得到:
<view-resources
appTitle = "Flash Jacks' Sleek Tab Site"
...
</view-resources>
3:页眉
页眉是下一个有趣的条目(3).在这里我们使用包含指令来插入页眉模板文件到页主体中.我们将在下一个子单元中来看一看页眉.
我们仅仅使用了页面直接去读取页眉,不论页的组件存储在哪里.这是一个好机会来介绍模板标签系统的目录设置.默认情况下,模板目录布局如下所示(注意这些路径相对于我们的应用程序):
The Default PhpMVC_Tags Template Directory Layout Paths (relative)
The Template Files './WEB-INF/tpl'
The Compiled Template Files './WEB-INF/tpl_C'
如果需要的话我们可以在配置文件的view-resources结点来重新定义他们,就像这样:
<view-resources
...
tplDir = "./WEB-INF/tpl-admin"
tplDirC = "./WEB-INF/tpl_admin_C"
...
</view-resources>
4:页内容主体
这是另外一个包含指令被用来插入模板文件(4)到主体中.注意包含的文件位于模板目录的sales子目录中:
"./WEB-INF/tpl/sale/pageContent.ssp"
5:页脚
又是一个包含指令,就像页眉一样.
页眉单元
在这个例子中页眉模板文件('pageHeader.ssp')只是一个简单的单元,就像这样:
<!-- Page Header -->
<span>
<@ =viewConfig.getAppTitle @>
</span>
当主体页面(包括包含的页面)被编译的时候,页眉的表达式被转换成下面这样:
<!-- Page Header -->
<span>
<?php print $viewConfig->getAppTitle(); ?>
</span>
被编译的页面被存储在编译模板目录中,就像上面所说的,默认的编译模板目录是:
'./WEB-INF/tpl_C'
页内容主体单元
页内容主体模板文件有一点复杂.文件('sale/pageContent.ssp')内容显示如下:
...
1
<@ item1=data->getValueBean("ITEM_1") @>
<@ products=data->getValueBean("PRODUCTS_ARRAY") @>
2
<h4><@=dealHeading @> <@=saleMonth @></h4>