19
Mar

Drupal 7 et la balise description

Drupal SEO

Drupal 7 est sorti en version stable le 5 janvier 2010. Le module Nodewords, qui permet de renseigner les balises meta, n'existe plus pour Drupal 7. Il sera remplacé par par le module MetaTags qui n'est toujours pas sortie (à la date de rédaction de cette article le 17 mars 2010).

Le principe consite à ce servir de la fonction drupal_add_html_head disponible depuis Drupal 7.

Le principe est simple : Nous allons ajouter un champs " field_description_meta " dans le ou les type(s) de contenu. Il nous suffira de renseigner la fonction drupal_add_html_head avec le contenu de ce champ.

Si ce champs n'existe pas ou n'est pas renseigner alors nous prendrons les 250 premiers caractères du champs body pour la description.

Et si finalement le champ body n'existe pas ou est vide on insère une description par default.

Nous allons donc ajouter une fonction dans le fichier template.php de notre theme :

<?php
// Pensez à remplacer montheme par le nom de votre thème.
function montheme_page_alter( &$page ) {
    $description_value = null;
    if( isset( $page[ 'content' ][ 'system_main']['nodes'])) {
        $nodes = $page[ 'content' ][ 'system_main']['nodes'];
        foreach ($nodes as $key => $value ) {
            if( is_numeric( $key )) {
                $node = node_load( $key );
                if ( isset($node->field_description_meta['fr'][0]['value']) ) {
                    $description_value = 
                    $node->field_description_meta['fr'][0]['safe_value'];
                } elseif (isset ($node->body['fr'][0]['safe_value'])) {
                    $desc = strip_tags($node->body['fr'][0]['safe_value']);
                    $desc = substr($desc, 0, 250);
                    $description_value = $desc;
               }
            }
        }
    } else {
        // Une desciption par défault
        $description_value = "Description par default";
    }
    if( count( $description_value )) {
        $meta_description = array( 
            '#type' => 'html_tag', 
            '#tag' => 'meta',
            '#attributes' => array(
            'name' => 'description', 
            'content' => $description_value
       );
       drupal_add_html_head( $meta_description, 'montheme_field_meta_description' );
    }
} 
?>

Avec cette solution nous pouvons afficher une balise meta description. Néanmoins vivement le module MetaTags :-)




Ajouter un commentaire

Type the characters you see in this picture. (verify using audio)
Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated. Not case sensitive.