2011-09-13 19 views
3

我正在嘗試將聯繫表單烘焙成plone到我的網站的main_template。我這樣做是爲了使功能出現在plone設置中的「聯繫」導航按鈕this site上。我的做法是稍微修改contact-info.cpt以使其成爲宏,並在main_template.pt中使用該宏。當我嘗試查看我網站上的任何頁面時,我收到LocationError,除非我從contact-info.cpt中刪除tal:define="errors options/state/getErrors"行。工作Plone的聯繫形式到main_template.pt

This是我在代碼中用那一行得到的錯誤。如果我刪除該行,頁面將呈現,並且實際上看起來完全符合我的要求,但在提交表單時會出錯。 This是這種情況下的錯誤。我基本上都被困在這兩種情況下,並會感謝任何意見。

UPDATE(我使用的解決方案):

只是想後與我實際上是如何得到這個工作的最新情況。 Martijn Pieters提供的信息對理解爲什麼不起作用非常有幫助,但我確實無法從那裏開始工作。我最終迴歸jQuery,以便在site_actions和我的自定義下拉列表中工作。我將<metal:main>標籤與表單的內容包裹在一起,我給出了簡單標識「contact-info」。然後在主模板中,我還輸入了一個帶有「load-area」簡單標識的通用div。拼圖的最後一塊是改變我contact.js文件是contact.js.pt並輸入以下3行:

<tal:block define="portal_url context/@@plone_portal_state/portal_url"> 
    jq('#load-area').load('<span tal:replace="portal_url"></span>/contact-info #contact-info'); 
    </tal:block> 

想我應該張貼此櫃面它可以幫助其他人出來以後。

+0

你複製接觸信息.cpt.metadata文件到你的主題呢? –

+0

是的,我的確在使用你的教程作爲資源來知道哪些文件與聯繫表單有關。 – keiththomps

+0

我覺得Plone莫名其妙地認爲contact-info不是控制頁面模板,而是普通頁面模板,因爲模板全局變量缺少「state」。但我無法猜測這個原因。 –

回答

4

不能將控制器頁面模板(.cpt)用作宏,保持不變。

首先,控制器Python腳本需要在它的「環境」中使用幾個參數(options/state結構就是其中之一),而在重新使用它的TAL語句時,這些參數並不存在。您必須重新修改模板才能不依賴這些部分。其次,這是一個HTML表單,表單需要一個目標來發送它的數據。在控制器頁面模板中,這是由.metadata文件控制的,您必須明確設置它的目標。