preprocess_* functions to change value of variable in *.tpl.php file

Last edited on Sun, 2012-04-22 10:35

In the Drupal theme, template files (*.tpl.php) can be overrode to change views of pages, nodes, and blocks. you can also do it by writing a function to override in template.php file.

When you want to change the value of the variable in the *.tpl.php files, there are two ways, override *.tpl.php and using preprocess_* function in the template.php file. For example, when you want to add something to $links variable for display nodes. ($links is a variable for item list showing at the bottom of nodes)

When display QR code of showing page , I want change content of a block (a variable $block->content), I overrode it using block-block-3.tpl.php file.

You can do the same thing by writing a preprocess_block function in template.php.

Writing a following function, it is executed before display a block to change a content. This function replaces a content of a block with a generated QR code.

function nyanchew_preprocess_block(&$vars, $hook) {
  if ( ($vars['block']->module == "block") && ($vars['block']->delta == 3) ) {
    $path = trim($_GET['q'], '/');
    $path = drupal_get_path_alias($path);
    $path = 'http://nyanchew.com/' . $path;
    $arguments[] = array('name' => 'thisnode', 'data' => 'link', 'type' => 'qr', 'size' => 'small');
    $vars['block']->content = theme_mobilecode($path, $arguments). '
'. $path; } }