WAP/WML

WAP/WML templates require a php Content-Type header to be passed along with the template. The easist way to do this would be to write a custom function that prints the header. If you are using caching, that won't work so we'll do it using the insert tag (remember insert tags are not cached!) Be sure that there is nothing output to the browser before the template, or else the header may fail.

WAP/WML模板需要一个说明文件内容形式的文件头和模板同时传递出去。最容易的方式就是编写一个客户型的函数用来输出这个文件头。如果你使用缓冲,那将不会起作用,所以我们使用一些插入标记(记住:插入标记不是缓冲!)。请确保在你的模板输出到浏览器之前没有任何东西被输出,否则文件头将实效。

 

Example 18-6. using insert to write a WML Content-Type header

例 18-6. 使用插入来写一个WML类型的文件头

// be sure apache is configure for the .wml extensions! 
// put this function somewhere in your application, or in Smarty.addons.php
function insert_header() {
 // this function expects $content argument
 extract(func_get_arg(0));
 if(empty($content))
 return;
 header($content);
 return;
}

// your Smarty template _must_ begin with the insert tag example:

{insert name=header content="Content-Type: text/vnd.wap.wml"}

<?xml version="1.0"?> 
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> 

<!-- begin new wml deck --> 
<wml> 
<!-- begin first card --> 
<card> 
<do type="accept"> 
<go href="#two"/> 
</do> 
<p> 
Welcome to WAP with Smarty!
Press OK to continue... 
</p> 
</card> 
<!-- begin second card --> 
<card id="two"> 
<p> 
Pretty easy isn't it?
</p> 
</card> 
</wml>