[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