[eluser]Colin Williams[/eluser]
Ha! I just logged in to say how great hooks are for running code on all page loads (in ANY controller.. so just extending the base Controller class for one controller doesn't cut it, neither does "hacking core").
I just wrote a hook that runs post_controller_constructor. Its function is to build the site's navigation menu. It classes all menu items that link to the current page as "active" so they can be styled with CSS. A rendered UL is then loaded as a global var (with $this->load->vars()) and becomes one simple variable to print out in my main template.
I don't know another elegant way to achieve this without a hook (accepting running the code in every controller's constructor). I'm finding them more and more useful for staying DRY.
Just follow the steps in the user guide, Athfar.