Les templates WAP/WML nécessitent un en-tête Content-Type qui doit être passé avec le template. Le moyen le plus facile de faire celà est d'écrire une fonction utilisateur qui écrit l'en-tête. Si vous utilisez le cache, celà ne fonctionnera pas. Nous utiliserons donc une balise d'insertion ({insert}) (rappelez-vous que les balises d'insertion ne sont pas mises en cache !). Assurez-vous qu'aucune sortie rien n'est transmise au navigateur avant l'appel du template, sans quoi la modification de l'en-tête échouera.
Example 18.6. Utilisation d'{insert} pour écrire un en-tête Content-Type WML
<?php // assurez-vous que Apache est configuré pour les extensions .wml ! // mettez cette fonction quelque part dans votre applications // ou dans Smarty.addons.php function insert_header() { // cette fonction attend un argument $content if (empty($params['content'])) { return; } header($params['content']); return; } ?>
votre template Smarty doit commencer avec la balise d'insertion :
{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>