[drupal-devel] [feature] Lazy loading of theme system

TDobes drupal-devel at drupal.org
Tue Mar 29 09:46:12 UTC 2005


Issue status update for http://drupal.org/node/19590

 Project:      Drupal
 Version:      cvs
 Component:    theme system
 Category:     feature requests
 Priority:     normal
 Assigned to:  moshe weitzman
 Reported by:  moshe weitzman
 Updated by:   TDobes
 Status:       patch

+1... this also has the added benefit that the $custom_theme variable
can be specified by a PHP node. (note that this doesn't work in
preview, though... only after the node has been submitted)


TDobes



Previous comments:
------------------------------------------------------------------------

March 28, 2005 - 07:31 : moshe weitzman

Attachment: http://drupal.org/files/issues/init_theme_lazy.patch (1.04 KB)

Don't initialize the theme system during common.inc. Instead, wait for
the first call to theme() and do it there. There are 2 big benefits:
- sometimes you never call theme(), and thus don't ever need to include
theme engine and template. thats a performance win. examples include RSS
feeds, blogapi, distributed auth, ...
- module developers are currently forced to use hook_init() to set a
custom theme for a given page view. with this patch, they can wait and
do this during hook_menu(). Without this delay, module developers are
tempted, sometimes forced, to break the bootstrap and inadvertently
load all the modules for every page view. I almost did this in Organic
Groups module, where each group can shoose its own theme. You can break
the bootstrap by doing something as simple as node_load().
This is a tiny patch, and merits consideration for 4.6, i think.


------------------------------------------------------------------------

March 28, 2005 - 07:48 : chx

Very nice, very clever, very big plus one.
BTW. What about including the "do not use hook_init instead hook_menu"
in the "update your modules" section of handbook?


------------------------------------------------------------------------

March 28, 2005 - 08:21 : moshe weitzman

that is already documented -
http://drupaldocs.org/api/head/function/hook_init. it doesn't belong in
the upgrading page it has worked this way for several rleases now.


------------------------------------------------------------------------

March 28, 2005 - 08:32 : chx

Several releases? hook_menu came to existence in 4.5, and we have 4.6
coming up.
And no, it was not working, I think it was you who have fixed bootstrap
sometime around 4.5.2...


------------------------------------------------------------------------

March 28, 2005 - 11:42 : Chris Johnson

Agree on this being a very nice patch.  Nice performance optimization. 
+1


------------------------------------------------------------------------

March 28, 2005 - 11:46 : Dries

I wonder if this "performance win" is even measurable.  That aside, it
makes sense to do it this way.





More information about the drupal-devel mailing list