* * ABOUT THE TEMPLATE.PHP FILE * * The template.php file is one of the most useful files when creating or * modifying Drupal themes. With this file you can do three things: * - Modify any theme hooks variables or add your own variables, using * preprocess or process functions. * - Override any theme function. That is, replace a module's default theme * function with one you write. * - Call hook_*_alter() functions which allow you to alter various parts of * Drupal's internals, including the render elements in forms. The most * useful of which include hook_form_alter(), hook_form_FORM_ID_alter(), * and hook_page_alter(). See api.drupal.org for more information about * _alter functions. * * OVERRIDING THEME FUNCTIONS * * If a theme hook uses a theme function, Drupal will use the default theme * function unless your theme overrides it. To override a theme function, you * have to first find the theme function that generates the output. (The * api.drupal.org website is a good place to find which file contains which * function.) Then you can copy the original function in its entirety and * paste it in this template.php file, changing the prefix from theme_ to * STARTERKIT_. For example: * * original, found in modules/field/field.module: theme_field() * theme override, found in template.php: STARTERKIT_field() * * where STARTERKIT is the name of your sub-theme. For example, the * zen_classic theme would define a zen_classic_field() function. * * Note that base themes can also override theme functions. And those * overrides will be used by sub-themes unless the sub-theme chooses to * override again. * * Zen core only overrides one theme function. If you wish to override it, you * should first look at how Zen core implements this function: * theme_breadcrumbs() in zen/template.php * * For more information, please visit the Theme Developer's Guide on * Drupal.org: http://drupal.org/node/173880 * * CREATE OR MODIFY VARIABLES FOR YOUR THEME * * Each tpl.php template file has several variables which hold various pieces * of content. You can modify those variables (or add new ones) before they * are used in the template files by using preprocess functions. * * This makes THEME_preprocess_HOOK() functions the most powerful functions * available to themers. * * It works by having one preprocess function for each template file or its * derivatives (called theme hook suggestions). For example: * THEME_preprocess_page alters the variables for page.tpl.php * THEME_preprocess_node alters the variables for node.tpl.php or * for node--forum.tpl.php * THEME_preprocess_comment alters the variables for comment.tpl.php * THEME_preprocess_block alters the variables for block.tpl.php * * For more information on preprocess functions and theme hook suggestions, * please visit the Theme Developer's Guide on Drupal.org: * http://drupal.org/node/223440 and http://drupal.org/node/1089656 */ /** * Override or insert variables into the maintenance page template. * * @param $variables * An array of variables to pass to the theme template. * @param $hook * The name of the template being rendered ("maintenance_page" in this case.) */ /* -- Delete this line if you want to use this function function STARTERKIT_preprocess_maintenance_page(&$variables, $hook) { // When a variable is manipulated or added in preprocess_html or // preprocess_page, that same work is probably needed for the maintenance page // as well, so we can just re-use those functions to do that work here. STARTERKIT_preprocess_html($variables, $hook); STARTERKIT_preprocess_page($variables, $hook); } // */ /** * Override or insert variables into the html templates. * * @param $variables * An array of variables to pass to the theme template. * @param $hook * The name of the template being rendered ("html" in this case.) */ /* -- Delete this line if you want to use this function function STARTERKIT_preprocess_html(&$variables, $hook) { $variables['sample_variable'] = t('Lorem ipsum.'); // The body tag's classes are controlled by the $classes_array variable. To // remove a class from $classes_array, use array_diff(). //$variables['classes_array'] = array_diff($variables['classes_array'], array('class-to-remove')); } // */ /** * Override or insert variables into the page templates. * * @param $variables * An array of variables to pass to the theme template. * @param $hook * The name of the template being rendered ("page" in this case.) */ /* -- Delete this line if you want to use this function function STARTERKIT_preprocess_page(&$variables, $hook) { $variables['sample_variable'] = t('Lorem ipsum.'); } // */ /** * Override or insert variables into the node templates. * * @param $variables * An array of variables to pass to the theme template. * @param $hook * The name of the template being rendered ("node" in this case.) */ /* -- Delete this line if you want to use this function function STARTERKIT_preprocess_node(&$variables, $hook) { $variables['sample_variable'] = t('Lorem ipsum.'); // Optionally, run node-type-specific preprocess functions, like // STARTERKIT_preprocess_node_page() or STARTERKIT_preprocess_node_story(). $function = __FUNCTION__ . '_' . $variables['node']->type; if (function_exists($function)) { $function($variables, $hook); } } // */ /** * Override or insert variables into the comment templates. * * @param $variables * An array of variables to pass to the theme template. * @param $hook * The name of the template being rendered ("comment" in this case.) */ /* -- Delete this line if you want to use this function function STARTERKIT_preprocess_comment(&$variables, $hook) { $variables['sample_variable'] = t('Lorem ipsum.'); } // */ /** * Override or insert variables into the region templates. * * @param $variables * An array of variables to pass to the theme template. * @param $hook * The name of the template being rendered ("region" in this case.) */ /* -- Delete this line if you want to use this function function STARTERKIT_preprocess_region(&$variables, $hook) { // Don't use Zen's region--sidebar.tpl.php template for sidebars. //if (strpos($variables['region'], 'sidebar_') === 0) { // $variables['theme_hook_suggestions'] = array_diff($variables['theme_hook_suggestions'], array('region__sidebar')); //} } // */ /** * Override or insert variables into the block templates. * * @param $variables * An array of variables to pass to the theme template. * @param $hook * The name of the template being rendered ("block" in this case.) */ /* -- Delete this line if you want to use this function function STARTERKIT_preprocess_block(&$variables, $hook) { // Add a count to all the blocks in the region. // $variables['classes_array'][] = 'count-' . $variables['block_id']; // By default, Zen will use the block--no-wrapper.tpl.php for the main // content. This optional bit of code undoes that: //if ($variables['block_html_id'] == 'block-system-main') { // $variables['theme_hook_suggestions'] = array_diff($variables['theme_hook_suggestions'], array('block__no_wrapper')); //} } // */