Balises métas bien formée

[html]
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Language" content="fr,en,nl" />
<meta name="revisit-after" content="3 days" />
<meta name="robots" content="index, follow, all" />
<meta name="google-site-verification" content="+nxGUDJ4QpAZ5l9Bsjdi102tLVC21AIh5d1Nl23908vVuFHs34=" />
<meta name="keywords" content="" />
<meta name="description" content="my website" />

On utilise la classe magixcjquery_view_helper_headMeta pour ajouté nos balises métas avec PHP.

[PHP]
$meta = new magixcjquery_view_helper_headMeta();
/*
* définit le type de codage utilisé. 
* magixcjquery_view_helper_headMeta::contentType(content,charset);
*/
$meta->contentType('html','utf8');
/*
*Indique quel type de style à utiliser
*magixcjquery_view_helper_headMeta::contentStyleType(content);
*/
$meta->contentStyleType('css');
/*
*Indique quel type de langue est utiliser
*magixcjquery_view_helper_headMeta::contentLanguage(content);
*/
$meta->contentLanguage('fr,en,nl');
/*
* Indique aux robots un délai pour revisiter le site (Google ne l'utilise plus)
*magixcjquery_view_helper_headMeta::revisitAfter(intéger,delay(string));
*/
$meta->revisitAfter(3,'days');
/*
* Indique les permissions aux robots des moteurs de recherche
/*magixcjquery_view_helper_headMeta::robots(content);*/
magixcjquery_view_helper_headMeta::robots('index, follow, all');
/*
* Cette balise spécifique à Google remplace verify-v1
*magixcjquery_view_helper_headMeta::googleSiteVerification(content);
*/
$meta->googleSiteVerification('+nxGUDJ4QpAZ5l9Bsjdi102tLVC21AIh5d1Nl23908vVuFHs34=');
/*
* La balise keyword (ne sert que pour certains moteurs)
*magixcjquery_view_helper_headMeta::keywords(content);
*/
$meta->keywords('magixcjquery,jquery,ajax');
/*
* Indispensable pour la description de votre page web
*magixcjquery_view_helper_headMeta::description(content);
*/
$meta->description('my website');

Un système pour la gestion des "links" est également disponible et une classe (en cours d'écriture) pour la gestion de la balise TITLE.
On à demandé de voir l'intérêt d'avoir une tel classe, j'avoue qu'au début je n'en voyais pas trop l'utilité.
Imaginons que je dois faire un site internet avec smarty et que je souhaite réutiliser chaque fois le même style de balise.
Un petit plugin pour montrer l'intérêt :

[PHP]
<?php
/**
 * @category   Smarty Plugin
 * @package    Magix CMS
 * @copyright  Copyright (c) 2009 - 2010 (http://www.magix-cms.com)
 * @license    AGPL
 * @version    1.0 2009-10-27
 * @author Gérits Aurélien 
 *
 */
/**
 * Smarty plugin
 * @package Smarty
 * @subpackage plugins
 */
/**
 * Smarty {headmeta meta=""} function plugin
 *
 * Type:     function
 * Name:     
 * Date:     
 * Purpose:  
 * Examples: {headmeta}
 * Output:   
 * @link 
 * @author   Gerits Aurelien
 * @version  1.0
 * @param array
 * @param Smarty
 * @return string
 */
function smarty_function_headmeta($params, &$smarty){
        $meta = $params['meta'];
        if (!isset($meta)) {
                $smarty->trigger_error("meta: missing 'meta' parameter");
                return;
        }
        $ini = new magixcjquery_view_helper_headMeta();
        switch($meta){
                case 'contentType':
                        $content = !isset($params['content'])?$smarty->trigger_error("content: missing 'content' parameter"):$params['content'];
                        $charset = !empty($params['charset'])?$params['charset']:'utf8';
                        $head = $ini->contentType($content,$charset);
                break;
                case 'contentStyleType' : 
                        $content = !isset($params['content'])?$smarty->trigger_error("content: missing 'content' parameter"):$params['content'];
                        $head = $ini->contentStyleType($content);
                break;
                case 'contentLanguage' :
                        $content = !isset($params['content'])?$smarty->trigger_error("content: missing 'content' parameter"):$params['content'];
                        $head = $ini->contentLanguage($content);
                break;
                case 'revisitAfter' : 
                        $int = !empty($params['int'])? $params['int'] : 3;
                        $delay = !empty($params['delay']) ? $params['delay']: 'days';
                        $head = $ini->revisitAfter($int,$delay);
                break;
                case 'keywords' :
                        $content = !isset($params['content'])?$smarty->trigger_error("content: missing 'content' parameter"):$params['content'];
                        $head = $ini->keywords($content);
                break;
                case 'robots' :
                        $content = !isset($params['content'])?$smarty->trigger_error("content: missing 'content' parameter"):$params['content'];
                        $head = $ini->robots($content);
                break;
                case 'googleSiteVerification' :
                        $content = !isset($params['content'])?$smarty->trigger_error("content: missing 'content' parameter"):$params['content'];
                        $head = $ini->googleSiteVerification($content);
                break;
                case 'description' :
                        $content = !isset($params['content'])?$smarty->trigger_error("content: missing 'content' parameter"):$params['content'];
                        $head = $ini->description($content);
                break;
        }
        return $head;
}

On l'utilise de cette façon :

[smarty]
    {headmeta meta="contentType" content="html" charset="utf8"}
    {headmeta meta="contentStyleType" content="css"}
    {headmeta meta="contentLanguage" content="fr,en,nl"}
    {headmeta meta="keywords" content=""}
    {headmeta meta="robots" content="index,follow,all"}
    {headmeta meta="revisitAfter" int="3" delay="days"}