From: Peter L. <pe...@pe...> - 2004-11-19 20:49:22
|
On Fri, 19 Nov 2004, Perrin Harkins wrote: > On Fri, 2004-11-19 at 12:50, Peter Leonard wrote: >> 1) Rewrite fill_template to support nested variables at depth > 1. > > We already pretty much decided we have to change the > publish/fill_template stuff so that it just grabs all the data, builds a > structure, and passes it to a single template (which can include other > templates if it wants to). The current system with the recursive stuff > and things being built from the bottom up is confusing and makes us do > lots of workarounds like the ones you're talking about here. > > I don't see a good reason why all the sub-elements should get to choose > their own templates. It makes much more sense to me to have a single > templates handled in the top-level element. It's the way that most > people expect templating to work. Two reasons why per-element templates exist: 1) It allows for customization of story layout on a per-category basis without having to rewrite entire templates. 2) Our users needed something that was familiar to them - in this case, the HTML::Template half of the Bricolage publishing engine. Like it or not, this was a core issue during the design of Krang. In this case, it sounds like the enhanced fill_template() would fit a lot of your needs. > >> The other thought was a new method call in Krang::Publisher: >> >> my %context = (version => 'txt'); >> >> $publisher->publish_context(%context); >> my %pub_context = $publisher->publish_context(); > > There would be no need for an extra stash for variables if the whole > chunk of data was passed in to the top-level template and thus available > to everything below it. You could just add an extra param to the > template in your publish() method. > The problem is that this only works if you use one big template, or your templates are populated w/ <TMPL_INCLUDE> calls. Additionally, it wouldn't help when the decisions being made are outside of the context of the template, which was the motivator for this idea in the first place. --pete |