【问题标题】:Building a list of downloadable items in Orchard 1.6在 Orchard 1.6 中构建可下载项目的列表
【发布时间】:2013-02-09 12:12:07
【问题描述】:

我是 Orchard 的新手,我想知道用下载链接构建基本文档列表的“最佳”方式?

假设场景是这样的,我想制作一份新闻稿列表,新闻稿是 PDF 格式,用户应该可以直接从列表视图下载。 管理员应该能够轻松添加新的时事通讯,并且应该会出现在列表中。

我目前的思路是,通过仪表板,

  1. 创建具有标题字段和媒体选择器字段的内容类型“简报”,使用媒体选择器字段上传 PDF 文件。
  2. 然后创建一个查询,过滤器内容类型为“Newsletter”
  3. 创建一个指向查询的投影

但是,这只会给我一个内容项列表,将它们的标题显示为指向实际内容项的链接。

我尝试向查询添加布局并将其设置为显示属性而不是内容。通过这样做,我可以获得一个列表,我可以在其中更多地控制“输出”。我已经让它列出了标题,并通过重写并放入 MediaPicker.Url,它还在列表中显示了 URL。这一切都很好,但我在这里卡住了..

由于 MediaPicker.URL 以 ~/media/default/xyz/filename.pdf 之类的格式输出 url,我不能只将其放入 a href,它没有提供正确的文件下载链接。

Soo,问题是,我的想法和做法完全错误,还是我遗漏了一些明显的东西?欢迎所有想法和建议以及更多。

【问题讨论】:

  • 您尝试过这些模块吗? gallery.orchardproject.net/List/…
  • 请注意媒体选择器:我认为您提到的错误已在 1.x 分支上修复,您可以在以前的版本中使用模板覆盖解决它。只需要把前面的 tilda 去掉即可。
  • @Bertrand Le Roy,感谢您的建议,是的,我尝试了画廊中的模块,不幸的是,它们要么不适用于 1.6,要么不稳定,要么无法解决我的问题我正在尝试做:/。我尝试了 1.x 分支,但它似乎有同样的问题,所以我现在正在考虑覆盖模板。
  • 如果在 1.x 中仍未修复,请提交错误。我正在复制我在下面的答案中为网站构建的模板覆盖。
  • 感谢@Bertrand Le Roy,请参阅此处提交的问题orchard.codeplex.com/workitem/19442

标签: orchardcms orchardcms-1.6


【解决方案1】:

在您的主题中使用或调整以下模板覆盖:

@{
    var url = Model.ContentField.Url;
}
@if(Model.ContentField.Url != null) {
    if (url.StartsWith("~/")) {
        url = Href(url);
    }
    <div class="media-picker-field attachment-pdf">
        <a href="@url" class="pdf-download" title="@T("Download the PDF")"><span>download</span></a>
    </div>
}

根据需要修改文本。此模板是 Fields.MediaPicker-PDF.cshtml,用于名为 PDF 的媒体选择器字段。

【讨论】:

  • 感谢@Bertrand Le Roy 提供的代码示例,我认为要说明的重要一点是,只有在查询布局中将“显示类型”设置为“内容”时,这才有效。我已将其设置为 Property 并尝试这样做,我现在意识到过度使用内容模板可能是更好的方法。我发现最简单的方法是使用设计器模块中的形状跟踪工具。在模板中,代码使用 @Url.Content(Model.ContentField.Url) 来解析 URL。但这也有效:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多