[development] proposal for theming nodes
Darrel O'Pry
dopry at thing.net
Wed Dec 14 21:30:15 UTC 2005
On Wed, 2005-12-14 at 16:00 -0500, Syscrusher wrote:
> On Wednesday 14 December 2005 12:38, Darrel O'Pry wrote:
> > I'm in full agreement. posted the same thing on the theme list.
> > I think node->extra is probably a better name than the node->html i
> > suggested, but still a little too abstract. Maybe node->rendered since
> > we are talking about themed output whether its html, xhtml, rss, atom,
> > or whatever.
>
> What about three arrays:
>
> $node->before[] and $node->after[], to tell the themer that the
> added content is logically before or after the node body
>
> $node->extra[], to add content that has no specific sequential relation
> to the node
>
> Note that this is *not* intended to imply any particular placement on the
> page, but rather a relationship to the node having to do with the order
> in which the user should see the content. How the theme places it could
> be left-to-right (or the reverse, for some languages), top-to-bottom, on
> a diagonal, or ... whatever. In many themes, this may imply order of HTML
> emitted, but in other themes, it may relate to prominence (size and/or
> decoration) rather than strictly sequence.
>
> The behavior would be that each module can optionally add pre-themed
> content to $node->before[$module_name] (and so on), and the page theme
> would then insert the concatenation of these arrays in a place of its
> choosing.
>
> The before, after, and extra semantic is advisory to theme developers, not
> binding upon them. Default themes could take the simple course and simply
> prepend and append before[] and after[], respectively, and put extra[] in
> some reasonable place (maybe between the node body and after[]).
>
> Scott
I've been testing a local branch using the snippet below..
ordering is important, and should be a ui option, but a simple before
and after won't really suffice. I don't think the cms should have any
set notions of where things belong. I think a more generic weighting
would be more appropriate, maybe prepended to the key of
$node->rendered... so a simple ksort of node->rendered or $value can
handle the ordering...
0_nodevote, 1_node, 3_book it gets pretty easy to make them sortable...
but making the key naming consistent and programmatic is what I need to
figure out.
in theme.inc: theme_node
foreach($node->rendered as $key => $value) {
$output .= is_array($value) ? join("\n", $value) : $value;
}
phptemplate.engine: phptemplate_node
foreach($node->rendered as $key => $value) {
$variable['content'] .= is_array($value) ? join("\n", $value) : $value;
}
More information about the development
mailing list