WAP/WML

    WAP/WML模板要求与模板同时传递一个PHP的Content-Type头。最简单的方法是写一个定制函数来打印这个头信息。如果你使用缓存,这个方法将无法工作。所以我们使用{insert}标记。{insert}标记是不会被缓存的!注意,保证在模板之前没有任何东西输出给浏览器,否则头信息输出将失败。

例子18-6. 使用{insert}书写一个WML的Content-Type头

<?php

// 请确保Apache配置了.wml扩展!
// 将该函数放置在你的应用中,或Smarty.addons.php中
function insert_header($params)
{
   
// this function expects $content argument
   
if (empty($params['content'])) {
       return;
   }
   
header($params['content']);
   return;
}

?>

    你的Smarty模板必须以insert标记开始:

{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>