How to add meta tags programmatically in Drupal 7
This is the article number 10 of the series Practical Drupal Development. In this article, I'm going to show you how to add meta tags in Drupal 7 by using renderable arrays and the drupal_add_html_head() function.
The Goal
In the previous article, you customized the title of the front page by using preprocess functions. In this article, you are going to add a description to the front page by using renderable arrays, the drupal_add_html_head() function, and, of course, the same preprocess function as you used to customize the title.
Renderable Arrays
In Drupal 7 the whole page is built on renderable arrays, meaning that they are used to store the output to be rendered into HTML by the drupal_render() function.
Arrays are variables that allow you to store multiple values (non-scalar variables). PHP supports two types of these variables: arrays and objects.
This is what the function looks like:
/** * [THEME] Preprocess function for the html theme hook. */ function themename_preprocess_html(&$variables) { $front_page = drupal_is_front_page(); if ($front_page) { $variables['head_title'] = 'Jesús Heredia | Web Developer'; // Add the description meta tag to the header $meta_description = array( '#type' => 'html_tag', '#tag' => 'meta', '#attributes' => array( 'name' => 'description', 'content' => "Jesús Heredia's personal website. Web Development on HTML5, CSS3, JavaScript, PHP, and Drupal.", ) ); drupal_add_html_head($meta_description, 'meta_description'); } }
The first parameter of the drupal_add_html_head() function must be a renderable array. If the #type key is not set, then html_tag will be added as the default #type.