<div dir="ltr">Hello,<br><br>I need use several layout templates in same layer for z3c.pagelet-based browser views.<br>For this, in current project I did follow:<br><br>renderer.py:<br><br>from zope.component import getMultiAdapter<br>
from z3c.template.interfaces import ILayoutTemplate<br><br>
def layoutRenderer(self):<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &quot;&quot;&quot;Allow to use named layout templates.&quot;&quot;&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name = self.layout_name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; except:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name = u&#39;&#39;<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.update()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if self.layout is None:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; layout = getMultiAdapter((self, self.request), ILayoutTemplate, name)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return layout(self)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return self.layout()<br>
<br>So, a pagelet&#39;s code look like:<br clear="all"><br>from .... renderer import layoutRenderer<br><br>class Pagelet(object):<br>&nbsp;&nbsp;&nbsp; __call__ = layoutRenderer<br><br>&nbsp;&nbsp;&nbsp; ....<br><br>and usual pass the name into zcml-directive:<br>
<br>&lt;z3c:pagelet<br>&nbsp;&nbsp;&nbsp; ...<br>&nbsp;&nbsp;&nbsp; layout-name=&quot;narrow&quot;<br>&nbsp;&nbsp;&nbsp; /&gt;<br><br>And layout-directive from z3c.template allow define name.<br><br>Summary, it quite convenient. But my proposal - let&#39;s add this feature into z3c.pagelet package.<br>
<br>-- <br>Ilshad Habibullin<br>Gadoz, Inc (<a href="http://www.gadoz.com">http://www.gadoz.com</a>)<br>
</div>