1.註冊靈巧容器太
視圖註冊爲原型文件夾界面(Products.CMFCore.interfaces._content.IFolderish
)的觀點,但你的靈巧容器不提供此接口(但plone.dexterity.interfaces.IDexterityContainer
)。 原因可能是產品和/或視圖與靈巧不兼容。
安韋,你可以通過把在configure.zcml
有點ZCML在你的包也註冊的View的IDexterityContainer
接口(另見Dexterity Developer Manual的Creating a package部分)自己試一下:
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser">
<configure package="collective.documentviewer">
<browser:page
name="dvpdf-group-view"
for="plone.dexterity.interfaces.IDexterityContainer"
class=".views.GroupView"
template="templates/group-view.pt"
permission="zope2.View"
layer=".interfaces.ILayer" />
</configure>
</configure>
從collective.documentviewer configure.zcml複製<browser:page>
,但我已將界面for=
更改爲靈巧容器界面,以便此視圖也適用於敏捷容器。
內<configure package="collective.documentviewer">
告訴配置應該彷彿configure.zcml中將直接在collective.documentviewer
應用的ZCML分析器 - 這允許您例如使用原來的模板(否則你就必須將它複製或做一些噁心的事物)。
我沒有自己測試它:它可能仍然是該視圖需要一個原型容器,並不適用於一個靈巧的容器。也可能是你必須從文檔查看器註冊更多的組件(可能是菜單?看看original configure.zcml中註冊的內容。
如果一切正常,你應該考慮在集體中進行更改。直接向github提交文檔查看器,並向作者提出一個拉動請求(請注意靈巧不是plone-core)但是首先詢問是否以及如何執行該操作:-)
2.更改默認視圖
使用plone,可以爲特定類型定義多個視圖。然後可以在此類型的每個實例的顯示菜單中選擇該視圖。如果您打開http://localhost:8080/Plone/portal_types/manage_main
並點擊您的類型,則會出現一個字段Available view methods
,您可以在其中單獨添加視圖名稱(dvpdf-group-view
)。
創建類型的新對象或訪問現有類型之後,您將看到一個「顯示」菜單,其中應列出視圖。選擇它並且此對象現在具有此視圖作爲默認值。 (如果你想讓視圖在這種類型的其他對象上不可選擇,你可以從類型配置中刪除它,這樣它就不再可選 - 對象的現有配置將保持不變)。
這些說明很完美 - 謝謝!我曾看到但忘記了您可以將外部產品的配置說明放入您的本地configure.zcml中。 – mjtrac
(編輯超時。)這些說明很完美 - 謝謝!該視圖現在可以工作,並可以通過承諾的顯示菜單進行實例翻轉。我曾看到但忘記了您可以將外部產品的配置說明放入您的本地configure.zcml中。我很樂意對collective.documentviewer的副本進行更改;我正確的說,功能改變只是將一個空格分隔的「plone.dexterity.interfaces.IDexterityContainer」添加到視圖的「for」行?需要對敏捷容器進行哪些額外的測試? – mjtrac
不客氣:)將IDexterityContainer添加到同一個ZCML標籤將不起作用 - 在這種情況下,for只能包含一個單獨的接口(在其他標籤中可能有多個空間分隔的值,例如)。添加一個額外的 -tag應該可以完成這項工作 - 但所有與靈巧相關的事情都應該在zcml:condition =「installed plone.app.dexterity」內(請參閱[here](http://stackoverflow.com/問題/ 1596611 /什麼是有效條件爲zcmlcondition)在zcml條件),所以它仍然工作沒有靈活性,但原型。 –
jone