2012-10-31 16 views
6

के भीतर परिभाषित-मैक्रो: मैं अपने कोड को प्रतिलिपि बनाने से बचने के लिए एक एकल पांच व्यूपेज टेम्पलेटफाइल पेज टेम्पलेट के भीतर एक मैक्रो का उपयोग करना चाहता हूं।धातु: उपयोग-मैक्रो और धातु: पांच व्यूपेज टेम्पलेटफाइल

नीचे मेरी प्रयास है:

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:tal="http://xml.zope.org/namespaces/tal" 
     xmlns:metal="http://xml.zope.org/namespaces/metal" 
     xmlns:i18n="http://xml.zope.org/namespaces/i18n" 
     tal:omit-tag="" 
     > 

    <metal:row define-macro="row"> 
     <tal:block repeat="widget view/widgets"> 
      <div tal:attributes="class python:'%s%s' % (widget.klass, widget.mode=='hidden' and ' hidden' or '')" 
       tal:condition="python:view._includeRow(widget.name)"> 

       <div tal:replace="structure widget/render"></div> 

      </div> 
     </tal:block> 
    </metal:row> 

    <table class="datagridwidget-table-view" tal:attributes="data-extra view/extra"> 
     <thead> 
      <tr> 
       <th class="header"> 
        <!-- --> 
       </th> 
       <th id="" class="header" tal:condition="view/allow_insert"></th> 
       <th id="" class="header" tal:condition="view/allow_delete"></th> 
       <th id="" class="header" tal:condition="view/allow_reorder"></th> 
       <th id="" class="header" tal:condition="view/allow_reorder"></th> 
      </tr> 
     </thead> 
     <tbody class="datagridwidget-body" tal:attributes="data-name_prefix view/name_prefix; data-id_prefix view/id_prefix"> 
      <tal:row repeat="widget view/getNormalRows"> 
       <tr> 
        <metal:macro use-macro="here/row" /> 
       </tr> 
      </tal:row> 

      <tal:row condition="view/getTTRow" define="widget view/getTTRow"> 
       <tr> 
        <metal:macro use-macro="here/row" /> 
       </tr> 
      </tal:row> 


      <tal:row condition="view/getAARow" define="widget view/getAARow"> 
       <tr> 
        <metal:macro use-macro="here/row" /> 
       </tr> 
      </tal:row> 


    </tbody> 
</table> 
<input type="hidden" tal:replace="structure view/counterMarker" /> 
</html> 

हालांकि, यहाँ परिभाषित नहीं है (के रूप में यह रूप में तक मुझे पता है काम करने के पुराने स्वतंत्र पृष्ठ टेम्पलेट तरीका है)।

मैं टेम्पलेट को खुद को ViewPageTemplate.pt टेम्पलेट से कैसे देख सकता हूं और .pt फ़ाइल के भीतर मैक्रोज़ का उपयोग/परिभाषित कर सकता हूं?

+0

'संदर्भ' के बजाय का उपयोग कर करता है पसंद कर सकते हैं 'यहाँ', मदद? –

उत्तर

7

मुझे लगता है कि आप चाहते हैं:

<metal:macro use-macro="template/macros/row" /> 
+0

मैं कस्टम ग्रोक व्यू के साथ प्लोन 4.2.2 का उपयोग कर रहा हूं और यह स्निपेट मुझे एक स्थान त्रुटि देता है। टेम्पलेट अंश: http://pastebin.com/VgDjKYTV | ट्रेसबैक: http://pastebin.com/7PeK94WE –

3

जब आप का उपयोग ViewPageTemplateFile आप की पहुंच है (कम से कम) अपने टेम्पलेट में निम्न चर:

    यहाँ
  • टेम्पलेट
  • दृश्य

तो के बजाय "यहाँ" यदि आप अपने "पंक्ति" मैक्रो का उपयोग करने की template/macros उपयोग कर सकते हैं के रूप में @davisagli

1

इंगित करता है (जो view/context के बराबर है) यह भी

<metal:macro use-macro="here/ViewPageTemplate/macros/row" /> 
संबंधित मुद्दे