Overriding theme_item_list() not working I have the following code in the theme template.php file:

function MYTHEME_item_list(&amp;$variables) {
  // my custom stuff done to theme_item_list 
  return $output;
}


And also this:

function MYTHEME_theme($existing, $type, $theme, $path) {
  return array(
    'item_list' =&gt; array(
      'variables' =&gt; array(),
    ),
  );
}


I have cleared cache many times. 

Looking at the theme registry I can see that my override is getting picked up:

[item_list] =&gt; Array
  (
    [function] =&gt; MYTHEME_item_list
    [type] =&gt; theme_engine
    [theme path] =&gt; profiles/eurostar/themes/eurostar
    [variables] =&gt; Array
      (
        [items] =&gt; Array
          (
          ) 
        [title] =&gt; 
        [type] =&gt; ul
        [attributes] =&gt; Array
          (
          ) 
      )
    [preprocess functions] =&gt; Array
      (
      )
    [process functions] =&gt; Array
      (
      )
  )


Unfortunately none of this works. Does anyone have an idea of what I'm doing wrong?

UPDATE:
So, this works: theme('item_list', $variables);

This does not: theme_item_list($variables);
You don't need to implement hook_theme() if you just want to override an existing theme function.

I've just tried this code in my template.php file:

function MYTHEME_item_list(&amp;$variables) {
  // my custom stuff done to theme_item_list 
  return 'test';
}


And all calls to theme('item_list') now return the string 'test', and nothing else.

You'll need to clear Drupal's caches once you've implemented the function, that might also be an issue.