How do I change a theme based on the URL? I have a Drupal instance running on example.org. Which has a theme X installed and activated. Now for a limited period an event is supposed to be held on the site for which a special section has been "carved out." All the things related to that event will go to example.org/event2011. 

I want to have a different theme to be shown whenever a page under this section is viewed (e.g. http://example.org/event2011/about, http://example.org/event2011/node/123). How do I do that?

I have gone through many modules, but none of them is supporting Drupal 7. Preferably, I would like it to be done using modules and don't want to change anything my self at the code level.
Considering that the change is for a limited period of time, and that implementing such code is not difficulT, I would suggest to implement a custom module that changes the theme being used for specific pages.

It is enough to implement hook_custom_theme() as follows:

function mymodule_custom_theme() {
  if (arg(0) == 'event2011') {
    return 'the theme to use for that page';
  }
}


If you would need to change the theme only for http://example.com/event2011, but not for http://example.com/event2011/node/123, then the code should be changed to

function mymodule_custom_theme() {
  if (arg(0) == 'event2011' &amp;&amp; !arg(1)) {
    return 'the theme to use for that page';
  }
}


As for using the theme callbacks in the definition of a menu callback, the documentation says:


  As a general rule, the use of theme callback functions should be limited to pages whose functionality is very closely tied to a particular theme, since they can only be overridden by modules which specifically target those pages in hook_menu_alter(). Modules implementing more generic theme switching functionality (for example, a module which allows the theme to be set dynamically based on the current user's role) should use hook_custom_theme() instead.