【问题标题】:Linking to a "File type" Dexterity Content Type链接到“文件类型”敏捷内容类型
【发布时间】:2014-09-18 21:53:41
【问题描述】:

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

一切都很顺利,直到我意识到......

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

这很麻烦。有没有人这样做过,或者找到一种方法让它自动链接到下载文件?如果我们需要禁用/废弃 Dexterity 内容类型视图以支持直接链接,那可能很好,但如果您能想出一种方法使这两种方式都能工作(即有一个链接方法将其带到文件和将其带到视图的链接方法)。

这是我所说的“查看”页面,以防不清楚:

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

【问题讨论】:

标签: plone dexterity plone-4.x


【解决方案1】:

我会去争取奖励积分,虽然我还没有完全测试过这个......

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

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

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

【讨论】:

  • 天啊!!! TTW 解决方案..?!这真太了不起了!谢谢大卫!格兰芬多100分。除了我将它添加到 typesUseViewActionInListings 并且它不会自动转到 /view 之外,我能够按照您提到的方式实现所有内容,它仍然会下载文件。不过,我现在完全可以接受。谢谢大卫!! :)
【解决方案2】:

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

当有人要求查看链接内容类型对象时,视图会查看请求者是否拥有链接对象的Modify portal content 权限。如果他们这样做了,他们就会看到常规视图,从而有机会进行编辑。如果没有,视图会返回一个重定向到目标 URL。

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

【讨论】:

  • 很有趣,谢谢 SteveM!这真是个好主意。我会对此进行测试,并让您知道它是否有效!
猜你喜欢
  • 2012-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
相关资源
最近更新 更多