Changing logo when signed in In page.tpl.php, the logo section is handled as:

&lt;?php if ($logo): ?&gt;
  &lt;a href="&lt;?php print $front_page; ?&gt;" title="&lt;?php print t('Home'); ?&gt;" rel="home" id="logo"&gt;
    &lt;img src="&lt;?php print $logo; ?&gt;" alt="&lt;?php print t('Home'); ?&gt;" /&gt;
  &lt;/a&gt;
&lt;?php endif; ?&gt;


When user signs in, I want logo to change from logo.png to inner_logo.png

I can track where $logo comes from and add an if statement like &lt;?php if($user-&gt;uid &lt;=0) { $logo = "logo.png" } else { ... ?&gt;

But would this be the correct practice? Is there a more practical Drupal way?

edit:

/* Override or insert variable into the pre-process_template*/
function bartik_preprocess_page(&amp;$variables) {
    if (user_is_logged_in()) {
        $variables['logo'] = (drupal_get_path('theme', 'bartik') . '/images/inner_logo.png');
    }
}
In general, every .tpl.php has what is called a "preprocess" function.  The default one for page.tpl.php is template_preprocess_page().  This sets up the variables that are available in the template.  Other modules and themes can have their own; then don't replace each other, rather, they all run in a defined order.

So, you would add in a preprocess function for your theme's template.php like:

function MYTHEME_preprocess_page(&amp;$variables) {
  if (user_is_logged_in()) {
    $path = drupal_get_path('theme', 'MYTHEME');

    $variables['logo'] = file_create_url($path . '/images/inner_logo.png');
  }
}


This will check to see if the user is logged in using the proper API call (program to the interface not the implementation), and then change the logo variable to a new path from within your theme.  Just make sure you clear the Drupal caches from admin/config/development/performance first so the function gets picked up.