[development] Code freeze reminder

Earl Miles merlin at logrus.com
Thu Jun 21 15:26:25 UTC 2007


Derek Wright wrote:
>>   5. The node render patch that Eaton started work on a while ago.  I 
>> don't think that is been committed yet, but Eaton recently reminded me 
>> about how important this is to further unify and clean-up the CCK and 
>> core.
> 
> Eaton and I spoke about this at length last week.  We decided the next 
> step for both node rendering and killing the evil $node namespace bugs I 
> was ranting about earlier is to convert $node from an object into a 
> #FAPI-style array.  This is a huge undertaking, but will solve a *bunch* 
> of issues and open up tons of new possibilities.  I've been so busy with 
> update_status that I haven't had a chance to work on the initial patch 
> for this.  If anyone else wants to get the ball rolling, that'd be great:
> http://drupal.org/node/148420

After giving this some long thought, I think I'm basically against this idea. 
The FAPI-style array will give more accessibility to developers, but designers 
don't get FAPI and I fear that it's the wrong direction.

I sent Eaton a proposal that he's not yet responded to (bad Eaton) but that I 
think works particularly well:

The short version of the proposal goes like this:

We create a hook (maybe hook_node_render($node_type)) that creates a list of 
theme functions that will be used to get output for the node. This is all 
inclusive and should get comments, taxonomy terms, pretty much anything that'll 
be attached to a node.

We render this stuff in template_preprocess_node(). We use 
variable_set/variable_get to determine what variable in the array to put it in. 
We default this to 'content' -- meaning stuff that isn't set just gets appended 
to $content. This means our hook, above, does have to do a little work with 
weights. We provide sensible defaults for things like $terms, $links, and other 
node bits that are already separated out.

We expose a UI to let the administrator modify what variable these items are 
placed in. This gives complete visibility to the designer layer. It also means 
we have completely perfect defaults. Themers don't have to mess with 
drupal_render() (which is a really difficult function to work with at the theme 
layer) and it becomes very easy to see everything that can go into a node. 
Moving it around is cake.

I know Jeff has visions of something more complex that can do nesting, but I'm 
really very concerned about the complexity and opacity that this provides. Ask 
any non-developer themer what it's like to work with FAPI. Is this *really* the 
model we want to follow for node rendering?


More information about the development mailing list