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

adrian drupal-devel at drupal.org
Tue Mar 29 14:22:40 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:   adrian
 Status:       patch

oooooh nifty!
(that is all .. oh... and +1 for 4.6)


adrian



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

March 28, 2005 - 15: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 - 15: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 - 16: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 - 16: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 - 19:42 : Chris Johnson

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


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

March 28, 2005 - 19:46 : Dries

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


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

March 29, 2005 - 11:46 : TDobes

+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)


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

March 29, 2005 - 12:03 : chx

What's more, a PHP block is also capable of setting $custom_theme (no
need to output anything, thus this will be an invisible block). This
combined with the powerful block admin pretty much obsoletes
sections.module and is capable of much more.





More information about the drupal-devel mailing list