如何覆盖模板“folder_full_view_item.pt”?

时间:2014-05-22 14:32:23

标签: plone theming

这个问题是this question的重新制定,它以一种令人困惑的方式演变而来。如果您搜索一些详细信息或对解决方法和替代解决方案感兴趣,请参阅this question

这个问题是关于folder_full_view_item.pt中对模板folder_full_view.pt的调用,而不是其他模板的调用!

请避免使用皮肤图层,editskinswitcher等变通方法。我不想在这里解决特定的用例。我想要的是真正了解这实际上是如何运作的。

我将这个问题分为三个部分:情景,结果,问题。

场景

拥有包含文档的文件夹。文件夹的布局为folder_full_view。文档的布局为document_view

Folder (layout=folder_full_view)
    Document (layout=document_view)

模板folder_full_view.pt通过folder_full_view_item.pt调用模板item.getObject().folder_full_view_item()folder_full_view_item.pt document_view.pt通过use-macro="item_macro"item_macro类似here/document_view/macros/content-core)来调用folder_full_view.pt :: item.getObject().folder_full_view_item() folder_full_view_item.pt :: use-macro="here/document_view/macros/content-core" document_view.pt 模板plone3_theme。原理如下:

folder_full_view.pt

folder_full_view_item.pt个模板document_view.ptconfigure.zcml <browser:page for="*" name="folder_full_view_item" template="folder_full_view_item.pt" layer="example.theme.browser.interfaces.IThemeSpecific" permission="zope2.View" /> <browser:page for="Products.ATContentTypes.content.folder.ATFolder" name="folder_full_view" template="folder_full_view.pt" layer="example.theme.browser.interfaces.IThemeSpecific" permission="zope2.View" /> <browser:page for="Products.ATContentTypes.content.document.ATDocument" name="document_view" template="document_view.pt" layer="example.theme.browser.interfaces.IThemeSpecific" permission="zope2.View" /> 的覆盖版本。这些模板在folder_full_view.pt

中注册如下
folder_full_view_item.pt

结果

安装主题后,结果如下:

文档和文件夹通过遍历获取模板(我猜)。 (子)模板虽然不经过遍历。

文件夹:使用覆盖 document_view.pt原始 document_view.pt原始 item.getObject().folder_full_view_item()

enter image description here

文档:使用覆盖 folder_full_view.pt

enter image description here

问题

  1. folder_full_view_item.pt没有通过遍历的情况吗?如果是,为什么?

  2. 可以修改(document_view.pt!)以强制遍历覆盖{{1}}(!)并随后覆盖{{1}}?这可能吗?

  3. 再次,请避免使用皮肤图层,editskinswitcher等变通办法。我不想在这里解决特定的用例。我想要的是真正了解这实际上是如何运作的。

0 个答案:

没有答案