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; }