[development] proposal for theming nodes

Nedjo Rogers nedjo at islandnet.com
Wed Dec 14 16:20:52 UTC 2005


Good thinking, Ber.

> I think this practice of appending stuff to the body is very bad, since it
> makes it impossible to add thatdata elsewhere, without duplication.

Agreed.  We end up appending to $node->body in e.g. 'view' nodeapi hooks 
($node->body .= $whatever), or prepending, simply because there's no other 
way to get additional content rendered by themes' _node() functions--short 
of editing an individual theme.  The result is a lump of undifferentiated 
content, that the theme can only blindly repeat.

Consider the case of an image that's meant to accompany a node.  What we 
really want to do is define something like a $node->thumbnail_image, that 
the theme can then decide how to render.  But if we do so the theme won't 
know about this newly-defined property of the node object, so no image will 
render.

> I think that teh best option is an additional variable in $node
> $node->extra
> containing structured data added by all the modules.
> $node->extra->upload could, for example contain that uplaod/attachement 
> table,
> that is now hardcoded to the body.

So I like this idea a lot.

And, if for example we required that all $extra content be valid XHTML, 
e.g., be contained in an enclosing tag, we could include logic in the 
theme-side parsing that defined different handling for different types of 
tags.  I.e., theme parses first tag name, and, e.g., if it's an img, 
encloses it in a div with a particular style to define its placement on the 
page.



More information about the development mailing list