链接到“文件类型”敏捷内容类型

时间:2014-09-18 21:53:42

标签: plone dexterity plone-4.x

我们正在新的Plone 4.3.2网站上创建一个文件数据库,使用eea.facetednav作为主界面。为了拥有多个可搜索的“标签”以及发布年份,文章类型等其他信息,我们为这些“文件”创建了自定义敏捷内容类型。 Dexterity内容类型的一个字段是上传实际文件。

一切都在游动,直到我意识到......

链接到“文件”的基本功能之一现在已被破坏。我们希望创建一个文件的内部链接会提示打开文件或在点击时下载它,现在它只是带您进入新的Dexterity内容类型的“视图”,其中有一个指向实际文件的链接。

这非常麻烦。有没有人以前做过这个,或者找到了让它自动链接下载文件的方法?如果我们需要禁用/废弃Dexterity内容类型视图以支持直接链接,那可能没问题,但如果你能想出一种方法使这个方法双向工作(例如有一个链接方法将它带到文件和将其带到视图的链接方法)。

这是我所说的“查看”页面,如果不清楚的话: enter image description here

...在我的脑海中,我可以想到一个奇怪的Diazo解决方案,即制作一个解析此视图并自动重定向到文件链接的自定义模板,但这似乎是错误的/奇怪的。其他想法?

2 个答案:

答案 0 :(得分:4)

如果我必须解决这个问题,我会以"link" content type view in plone.app.contenttypes为模型。

当有人要求查看链接内容类型对象时,该视图会查看请求者是否对链接对象具有Modify portal content权限。如果他们这样做,他们会看到传统视图,让他们有机会进行编辑。如果他们没有,则视图会返回到目标网址的重定向。

您的代码会更简单。检查权限后,您只需附加@@download/field_name即可获取重定向网址。

答案 1 :(得分:4)

我将获得奖励积分,但我尚未对此进行全面测试...

首先,您必须将文件字段指定为内容类型的“主要”字段。遗憾的是,此选项未显示在UI中,因此您必须编辑架构的XML版本(在最近版本的dexterity控制面板中有一个按钮)。在顶部添加xmlns:marshal="http://namespaces.plone.org/supermodel/marshal"作为命名空间,并将marshal:primary="true"添加到相关的field代码中。

然后,在portal_types中找到您的类型,并将“默认视图方法”更改为@@download。 (对于Dexterity内容类型,它通常以view开头。)这应该使项目的URL下载文件而不是显示普通视图。它知道要使用哪个字段,因为您将其指定为主要字段。

您仍然可以通过在项目的网址末尾添加/view来访问普通视图。如果您希望Plone在从导航和文件夹内容链接到类型时执行此操作(就像对内置图像和文件一样),请转到portal_properties / site_properties并将类型的ID添加到typesUseViewActionInListings列表中。