我有一個Plone插件(通過Zope創建),其中包含Javascript和頁面模板文件。一些Javascript函數需要調用Python腳本(通過AJAX調用) - 如何在不通過ZMI的情況下將這些Python腳本包含在我的插件中?包含Python腳本和Plone插件
我有一個「瀏覽器」文件夾,其中包含一個「configure.zcml」文件 - 註冊資源目錄和我的模板文件。我會假設註冊python文件會類似於這個,或類似於JavaScript文件註冊的方式,但可能不是?
我有一個Plone插件(通過Zope創建),其中包含Javascript和頁面模板文件。一些Javascript函數需要調用Python腳本(通過AJAX調用) - 如何在不通過ZMI的情況下將這些Python腳本包含在我的插件中?包含Python腳本和Plone插件
我有一個「瀏覽器」文件夾,其中包含一個「configure.zcml」文件 - 註冊資源目錄和我的模板文件。我會假設註冊python文件會類似於這個,或類似於JavaScript文件註冊的方式,但可能不是?
您註冊Python作爲內容對象的意見:
<browser:page
for="**INTERFACE**"
name="**name**"
class="**class**"
attribute="**method**"
permission="zope2.View"
/>
凡接口是你想擁有的視圖對象的接口, 名是視圖名稱(即,http://path-to-object/@@name
), 類是您的腳本定義的Python類,屬性是類的可選方法(它默認爲__ 致電 __)。嚴格地說,我認爲類是任何可調用的,不一定是一個類的方法。
這是一個腳本,我用了一個KSS動作(幾乎爲編寫自己的AJAX腳本,同樣的事情) - 類可能需要從BrowserView中繼承(PloneKSSView是,對於KSS視圖的專業化):
<browser:page
for="Products.VirtualDataCentre.interfaces.IDDCode"
name="getTableColumns"
class="Products.VirtualDataCentre.browser.DDActions.DDActions"
attribute="getTableColumns"
permission="zope2.View"
/>
其中IDDCode是我所需要的視圖中的內容類型,並DDActions.py有:
from Products.Five import BrowserView
from plone.app.kss.plonekssview import PloneKSSView
class DDActions(PloneKSSView):
def getTableColumns(self, table, currValue, currLabel):
columns = self.context.getColumnNames(table)
for (field, curr) in [('valueColumn', currValue), ('labelColumn',currLabel)]:
self.replaceSelect(field, columns, (curr or self.context[field]))
@blacksheep看到修改後的答案 – Auspex 2011-06-01 20:00:05
正是我在找什麼!謝謝! – lightningmanic 2011-06-01 20:12:42