durusmail: qp: Update release 0.1.1 of Evoque Templating
Update release 0.1.1 of Evoque Templating
2008-03-24
2008-03-31
2008-03-31
2008-03-31
Update release 0.1.1 of Evoque Templating
Tristan Short
2008-03-31
Mario,

Great, just what I was after. I was overlay'ing when I should have been
evoque'ing. Further comments below.


mario ruggier wrote:
> On Mar 31, 2008, at 1:55 PM, hollowsun@waitrose.com wrote:
>>  Mario,
>>
>> Thank you for evoque, and integrating it with Gizmo(QP).
>>
>> On the evoque website would it be possible to show some typical
>> example template files? I am keen to see how to put and call multiple
>> sub-templates in the same physical file (provided of course they all
>> use the same overlay template).
>
> To define multiple sub-templates you just delineate with $begin{name}
> and $end{name}. To call them (from anywhere within same file) you do
> $evoque{#name}.
>
> There is something that I suspect is not clear. Every file has a
> begin{} and end{} implied... (corresponds to beginning and end of the
> file). This is for the convenience of being able to $evoque{} any
> file/template/content you like, without needing to modifying it. The
> difference is how to address it (from another file) -- when no
> begin/end you just do $evoque{filename.ext}, but if you explicitly
> specify either a begin or an end label (or both), then you must do
> $evoque{filename.ext#label}.
>
> However, if you declare that a "file" is an
> $overlay{some_other_template}, what you are doing is declaring the
> implied top-level template to be an overlay....
>
> Thus, any other sub-templates defined in the file do not inherit the
> overlay information in any way, and if you want a sub-template to also
> be an overlay then you must explicitly issue an overlay directive
> within the sub-template's body. Scan thru the tests for different
> scenarios...
>
>> I am trying to aim for one template file per Directory class with
>> each Directory component having its own sub-template in a $begin{xyz}
>> .. $end{xyz} block. But have been unable to do it so far. As all the
>> sub-template blocks use the same master_template (_template.html) I
>> am expecting it to be ok to have all the sub-template blocks in one
>> file, as there only needs to be one overlay statement?
>
> A limitation on sub-template labels is that each label may be used
> only once in the same file, irrespective of the depth level of the
> sub-template being defined. You can think of sub-templates as being
> defined globally as far as the "top level template" is concerned.
>
> IIUC, you would like to have several sub-templates in the same file
> (one per "directory export"), and each of them being an overlay on
> _template.html? This would require that each sub-template define a
> similarly labeled sub-template in the same file (not allowed -- in
> favour of keeping the simple case of a label may be used only once per
> file).
Yes, that is the problem at hand. I now get the "label not to be used
more than once" rule - I was falling foul of this.
>
> While this is possible to achieve (and does not use overlays) to me it
> gets to be less clear (and requires the use of the expression form of
> the $evoque{} directive i.e. ${evoque(template)} where "template" is a
> variable to be interpolated dynamically). I can elaborate on details
> for how to achieve that if you like, but my preference is the more
> straight forward file-per-export-template.
>
Yes, sounds decidedly not straight-forward, esp for me so best avoided :-)
>> I could solve the problem by using one sub-template per file (like
>> the examples that ship with Gizmo(QP)) but I kind of like having all
>> the sub-template blocks in one html file, as opposed to multiple
>> files or using qpy methods to fill in the sub-template specific
>> template content. I am sure I am missing something and just need a
>> solid example(s).
>
> Yes, an example of doing it this way is at:
> http://evoque.gizmojo.org/directives/overlay/positive/
>
> OK, if you really want to see how it can work with all sub-templates
> for a directory in one file, let''s say you have a qp/gz Directory A,
> and exports X1 and X2... you could do something like this:
>
> ---- _template.html
>     ... page layout stuff ...
> ${evoque(export_template)}
>     ... page layout stuff ...
> ----
>
> ---- _dirA.html
> $begin{X1}
>     .... template body for X1 export ...
> $end{X1}
> $begin{X2}
>     .... template body for X2 export ...
> $end{X2}
> ----
>
> Then when you render these, let's say for export X1, you must
> dynamically specify the export_template="dirA.html#X1" variable value,
> i.e. from python, you would do:
>
>
> domain.get_template("_template.html").evoque(export_template="dirA.html#X1")
>
>
> or, from within another template:
>
>     $evoque{_template.html, export_template="dirA.html#X1"}
>
> and using the gz integration of evoque, the equivalent of the above is:
>
>     page("X1 title", template="_template.html",
> export_template="dirA.html#X1")
>
> I hope that clarifies the situation somewhat.
>
Yes, it does. It helps heaps  (I got sidetracked into overlay'ing). Thanks.
> mario
>
> _______________________________________________
> QP mailing list
> QP@mems-exchange.org
> http://mail.mems-exchange.org/mailman/listinfo/qp
>
>

reply