Comment faire un meta-tag robots avec CakePHP ?

Dans une page HTML, un meta-tag est une balise se plaçant à l’intérieur du <head> permettant de donner une information concernant la nature ou le contenu de la page web. Il en existe de différents types tels que keywords (pour lister les mots clés de la page), description(pour faire une description de la page) ou robots(pour donner des directive aux moteurs de recherche). Vous pouvez trouver plus d’information à propos des meta-data sur le site du W3C.

Le meta-tag « robot » est utilisé pour donner aux moteurs de recherche et notamment à Google, la directive d’indexer et/ou de parcourir ou non la page web. Il prend la forme suivante :

<meta name="robots" content="index, follow">

Avec le framework web CakePHP, il est possible de générer des meta-data grâce à un appel à la méthode meta() de HtmlHelper. Voir la documentation de la méthode sur cakephp.org

$html->meta('robots', 'noindex',array("type"=>"robots"), false);

Dans le layout, l’écriture de la variable $scripts_for_layout permet l’affichage de tous les meta-data générés.

<?php echo $scripts_for_layout; ?>

CakePHP possède un validateur qui ne permet pas de faire des meta-tag de type robot. Il est nécessaire de patché le core du framework en modifiant HtmlHelper. Le patch à faire se trouve à la ligne 194 de du ficher cake/libs/views/helper/html.php.

Il suffit d’ajouter 'robots' => array('name' => 'robots', 'content' => $url) dans le tableau des types de meta-data autorisées.

/**
 * Creates a link to an external resource and handles basic meta tags
 *
 * @param  string  $title The title of the external resource
 * @param  mixed   $url   The address of the external resource or string for content attribute
 * @param  array   $attributes Other attributes for the generated tag. If the type attribute is html, rss, atom, or icon, the mime-type is returned.
 * @param  boolean $inline If set to false, the generated tag appears in the head tag of the layout.
 * @return string
 */
function meta($type, $url = null, $attributes = array(), $inline = true) {
    if (!is_array($type)) {
        $types = array(
            'rss'	=> array('type' => 'application/rss+xml', 'rel' => 'alternate', 'title' => $type, 'link' => $url),
            'atom'	=> array('type' => 'application/atom+xml', 'title' => $type, 'link' => $url),
            'icon'	=> array('type' => 'image/x-icon', 'rel' => 'icon', 'link' => $url),
            'keywords' => array('name' => 'keywords', 'content' => $url),
            'description' => array('name' => 'description', 'content' => $url),	
            'robots' => array('name' => 'robots', 'content' => $url)   /*  <---    ajouter */
        );
 
.....
 
}

Articles similaires :

Mots-clefs : , , , ,

Laisser une réponse