2012-09-11 35 views
0

我一直在處理plone升級問題,我想我幾乎已經完成了清理工作。Plone 3.3.5 portlets_fetcher問題

這個最新的錯誤讓我...

在main_template我得到一個錯誤:

Macro Expansion failed 
exceptions.NameError: name 'pathexpr' is not defined 

我把它追溯到從portlets_fetcher模板到來。這一個出來的盒子,但它仍然拋出錯誤。

我不明白這一點,我看到右邊有:

tal:define="pathexpr python:slot[0]; 
      usemacro python:slot[1];" 

人知道爲什麼我得到這個?

我的故障,我得到了錯誤,試圖編輯自定義main_template。我沒有在任何地方看到pathexpr,所以我使用了skins文件夾中的查找選項卡,唯一的結果是portlets_fetcher。我複製portlets_fetcher到自定義,並在那裏看到相同的錯誤。

編輯:這裏是portlets_fetcher模板:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" 
     xmlns:tal="http://xml.zope.org/namespaces/tal" 
     xmlns:metal="http://xml.zope.org/namespaces/metal" 
     xmlns:i18n="http://xml.zope.org/namespaces/i18n" 
     i18n:domain="plone"> 
<body> 
<metal:leftcolumn define-macro="left_column" 
    tal:define="Iterator python:modules['Products.CMFPlone'].IndexIterator; 
       tabindex python:Iterator(pos=10000, mainSlot=False);"0 
    tal:condition="sl|nothing"> 
    <metal:block tal:repeat="slot sl"> 
     <tal:dontcrash tal:on-error="structure python:context.plone_log('Error %s on %s while rendering portlet %s'%(error.type, error.value, slot[0])) or 
              '&lt;div class=\'error\'&gt;Error %s on %s: %s&lt;/div&gt;' % (error.type, slot[0], error.value)" 
         tal:define="pathexpr python:slot[0]; 
            usemacro python:slot[1];"> 
     <tal:block tal:condition="usemacro"> 
      <metal:block metal:use-macro="python:path(pathexpr)" /> 
     </tal:block> 
     <span tal:condition="not: usemacro" 
       tal:replace="structure python:path(pathexpr)" /> 
     </tal:dontcrash> 
    </metal:block> 
</metal:leftcolumn> 

<metal:rightcolumn define-macro="right_column" 
    tal:define="Iterator python:modules['Products.CMFPlone'].IndexIterator; 
       tabindex python:Iterator(pos=20000, mainSlot=False);" 
    tal:condition="sr"> 
    <metal:block tal:repeat="slot sr"> 
     <tal:dontcrash tal:define="pathexpr python:slot[0]; 
            usemacro python:slot[1];"> 
     <tal:block tal:condition="usemacro"> 
      <metal:block metal:use-macro="python:path(pathexpr)" /> 
     </tal:block> 
     <span tal:condition="not: usemacro" 
       tal:replace="structure python:path(pathexpr)" /> 
     </tal:dontcrash> 
    </metal:block> 
</metal:rightcolumn> 

</body> 
</html> 

這裏是main_template:

<metal:page define-macro="master"><metal:doctype define-slot="doctype"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></metal:doctype> 
<metal:block define-slot="top_slot" /> 
<metal:block use-macro="here/global_defines/macros/defines" /> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xml:lang="en" 
     lang="en" 
     tal:attributes="lang language; 
         xml:lang language"> 
    <tal:cache tal:define="lang language; 
         charset site_properties/default_charset|string:utf-8"> 
    <metal:cache use-macro="here/global_cache_settings/macros/cacheheaders"> 
     Get the global cache headers located in global_cache_settings. 
    </metal:cache> 
    </tal:cache> 
    <head metal:use-macro="here/header/macros/html_header"> 
    <metal:fillbase fill-slot="base"> 
     <metal:baseslot define-slot="base"> 
     <base href="" tal:attributes="href here/renderBase" /> 
     </metal:baseslot> 
    </metal:fillbase> 
    <metal:headslot fill-slot="head_slot"> 
     <metal:headslot define-slot="head_slot" /> 
     <tal:comment replace="nothing"> A slot where you can insert elements in the header from a template </tal:comment> 
    </metal:headslot> 
    <metal:styleslot fill-slot="style_slot"> 
     <tal:comment replace="nothing"> A slot where you can insert CSS in the header from a template </tal:comment> 
     <metal:styleslot define-slot="style_slot" /> 
    </metal:styleslot> 
    <metal:cssslot fill-slot="css_slot"> 
     <tal:comment replace="nothing"> This is deprecated, please use style_slot instead. </tal:comment> 
     <metal:cssslot define-slot="css_slot" /> 
    </metal:cssslot> 
    <metal:javascriptslot fill-slot="javascript_head_slot"> 
     <tal:comment replace="nothing"> A slot where you can insert javascript in the header from a template </tal:comment> 
     <metal:javascriptslot define-slot="javascript_head_slot" /> 
    </metal:javascriptslot> 
    </head> 
    <body tal:attributes="class here/getSectionFromURL; 
         dir python:test(isRTL, 'rtl', 'ltr')"> 
    <div id="visual-portal-wrapper"> 
     <div id="portal-top" i18n:domain="plone"> 
     <div id="portal-header"> 
      <p class="hiddenStructure"> 
       <a accesskey="2" 
        tal:attributes="href string:${current_page_url}#documentContent" 
        i18n:translate="label_skiptocontent">Skip to content.</a> | 
       <a accesskey="6" 
        tal:attributes="href string:${current_page_url}#portlet-navigation-tree" 
        i18n:translate="label_skiptonavigation">Skip to navigation</a> 
      </p> 
      <div metal:use-macro="here/global_siteactions/macros/site_actions"> 
       Site-wide actions (Contact, Sitemap, Help, Style Switcher etc) 
      </div> 
      <!--div metal:use-macro="here/global_searchbox/macros/quick_search"> 
       The quicksearch box, normally placed at the top right 
      </div--> 
      <a metal:use-macro="here/global_logo/macros/portal_logo"> 
       The portal logo, linked to the portal root 
      </a> 
      <!--div metal:use-macro="here/global_skinswitcher/macros/skin_tabs"> 
       The skin switcher tabs. Based on which role you have, you 
       get a selection of skins that you can switch between. 
      </div--> 
      <div metal:use-macro="here/global_sections/macros/portal_tabs"> 
       The global sections tabs. (Welcome, News etc) 
      </div> 
      </div> 
      <div metal:use-macro="here/global_personalbar/macros/personal_bar"> 
      The personal bar. (log in, logout etc...) 
      </div> 
      <!--div metal:use-macro="here/global_pathbar/macros/path_bar"> 
      The breadcrumb navigation ("you are here") 
      </div--> 
     </div> 
     <!--div class="visualClear" id="clear-space-before-wrapper-table" /--> 
     <tal:comment replace="nothing"> 
     The wrapper table. It contains the three columns. There's a table-less 
     alternative in the plone_tableless skin layer that you can use if you 
     prefer layouts that don't use tables. 
     </tal:comment> 
     <table id="portal-columns"> 
     <tbody> 
      <tr> 
      <tal:comment replace="nothing"> Start of the left column </tal:comment> 
      <td id="portal-column-one" 
       metal:define-slot="column_one_slot" 
       tal:condition="sl"> 
       <div class="visualPadding"> 
       <metal:portlets define-slot="portlets_one_slot"> 
        <metal:leftportlets use-macro="here/portlets_fetcher/macros/left_column"> 
        This instruction gets the portlets (boxes) for the left column. 
        </metal:leftportlets> 
       </metal:portlets> 
       &nbsp; 
       </div> 
      </td> 
      <tal:comment replace="nothing"> End of the left column </tal:comment> 
      <tal:comment replace="nothing"> Start of main content block </tal:comment> 
      <td id="portal-column-content" 
       tal:define="tabindex python:Iterator(pos=0, mainSlot=True)"> 
       <metal:block define-slot="content"> 
       <div id="content" 
        metal:define-macro="content" 
        tal:define="show_border python:here.showEditableBorder(template_id=template_id, actions=actions);" 
        tal:attributes="class python:test(show_border,'documentEditable','')"> 
        <metal:ifborder tal:condition="show_border" > 

        <tal:block tal:condition="not:here/isAnonymousUser"> 
        <div metal:use-macro="here/global_contentviews/macros/content_views"> 
         The content views (View, Edit, Properties, Workflow) 
        </div> 
        <div metal:use-macro="here/global_contentviews/macros/content_actions"> 
         The content bar 
        </div> 

        </tal:block> 

        </metal:ifborder> 
        <div class="documentContent" id="region-content"> 
        <a name="documentContent"></a> 
        <div metal:use-macro="here/global_statusmessage/macros/portal_message"> 
         Portal status message 
        </div> 

        <metal:bodytext metal:define-slot="main" tal:content="nothing"> 
         Page body text 
        </metal:bodytext> 
        <metal:sub metal:define-slot="sub"> 
         <metal:discussion use-macro="here/viewThreadsAtBottom/macros/discussionView" /> 
        </metal:sub> 
        </div> 
       </div> 
       </metal:block> 
      </td> 
      <tal:comment replace="nothing"> End of main content block </tal:comment> 
      <tal:comment replace="nothing"> Start of right column </tal:comment> 
      <td id="portal-column-two" 
       metal:define-slot="column_two_slot" 
       tal:condition="sr"> 
       <div class="visualPadding"> 
       <metal:portlets define-slot="portlets_two_slot"> 
        <metal:rightportlets use-macro="here/portlets_fetcher/macros/right_column"> 
        This instruction gets the portlets (boxes) for the right column. 
        </metal:rightportlets> 
       </metal:portlets> 
       &nbsp; 
       </div> 
      </td> 
      <tal:comment replace="nothing"> End of the right column </tal:comment> 
      </tr> 
     </tbody> 
     </table> 
     <tal:comment replace="nothing"> end column wrapper </tal:comment> 
     <div class="visualClear" id="clear-space-before-footer"><!-- --></div> 

     <hr class="netscape4" /> 
     <metal:block i18n:domain="plone"> 
     <metal:footer use-macro="here/footer/macros/portal_footer"> 
      Footer 
     </metal:footer> 
     <metal:colophon use-macro="here/colophon/macros/colophon"> 
      The colophon area - contains details about the production of 
      the site. Typically "powered by" buttons, standards, tools used. 
     </metal:colophon> 
     </metal:block> 
    </div> 
</body> 
</html> 
</metal:page> 
+1

你能粘貼整個模板嗎? – vangheem

+0

@vangheem完成!謝謝! – Snowburnt

回答

0

看來,這不是問題的根源。將用適當的信息打開另一個查詢。

感謝您的期待!