\modules/system/html.tpl.php
file
Default theme implementation to display the basic html structure of a single Drupal page.

Default theme implementation to display the basic html structure of a single Drupal page.

Variables:

  • $css: An array of CSS files for the current page.
  • $language: (object) The language the site is being displayed in. $language->language contains its textual representation. $language->dir contains the language direction. It will either be 'ltr' or 'rtl'.
  • $rdf_namespaces: All the RDF namespace prefixes used in the HTML document.
  • $grddl_profile: A GRDDL profile allowing agents to extract the RDF data.
  • $head_title: A modified version of the page title, for use in the TITLE tag.
  • $head_title_array: (array) An associative array containing the string parts that were used to generate the $head_title variable, already prepared to be output as TITLE tag. The key/value pairs may contain one or more of the following, depending on conditions:

    • title: The title of the current page, if any.
    • name: The name of the site.
    • slogan: The slogan of the site, if any, and if there is no title.
  • $head: Markup for the HEAD section (including meta tags, keyword tags, and so on).
  • $styles: Style tags necessary to import all CSS files for the page.
  • $scripts: Script tags necessary to load the JavaScript files and settings for the page.
  • $page_top: Initial markup from any modules that have altered the page. This variable should always be output first, before all other dynamic content.
  • $page: The rendered page content.
  • $page_bottom: Final closing markup from any modules that have altered the page. This variable should always be output last, after all other dynamic content.
  • $classes String of classes that can be used to style contextually through CSS.

Comments

josejayesh’s picture

Equivalent in drupal 6 API is page.tpl.php
http://api.drupal.org/api/drupal/modules--system--page.tpl.php/6

kiamlaluno’s picture

There is not equivalent of html.tpl.php, in Drupal 6. The page.tpl.php file is still used in Drupal 7, but html.tpl.php has been introduced with Drupal 7.

Garrett Albright’s picture

If you're trying to change the values of some of the variables in this template file, like $page_bottom, in a hook_preprocess_html() implementation, you might find yourself frustrated like I did that your variables seem to be disappearing by the time the page is rendered. Check out what template_process_html() is doing; it's clobbering those variables before html.tpl.php is included. So the short answer is, that instead of doing something like…

function hook_preprocess_html(&$vars) {
  $vars['page_bottom'] .= 'foo';
}

You must do…

function hook_preprocess_html(&$vars) {
  $vars['page']['page_bottom'][] = array('foo' => array('#markup' => 'foo'));
  // Or other render array stuff
}
baronvoninternet’s picture

I don't know about a module, but you can manually change the title and add in tags here .../modules/system/html.tpl.php No need to worry, it is just like any HTML based index page I do it on all my sites and it is awesome. This gives you way more control over what the search engines see.

info@cgfix.com’s picture

I don't see why we need an separate file for the html, head and body tags. This just makes themeing more complicated. Just frustrated about having to relearn my favorite apps. Everybody does this now.

lorenrosen’s picture

The idea is that, while you might have multiple page templates, they probably all have the same html header, etc. The html template allows them to be in one place.

Jody Lynn’s picture

See template_process_html for what will actually happen to your variables before they get to the template. You can't just prepare them as specified above. For example, you have to send a $variables['page']['#children'] if you want to send a $variables['page'].