markguinn / silverstripe-shop-downloadable
Silverstripe Shop 模块的下载产品
1.1.1
2016-05-18 17:14 UTC
Requires
- silvershop/core: ~1.2 || ~2.0
- silverstripe/framework: ~3.1
This package is not auto-updated.
Last update: 2024-09-23 15:25:51 UTC
README
适用于 Silverstripe Shop
允许产品或产品变体(或两者)具有客户购买后可以下载的文件。这些文件在用户的账户页面上保持可用。
要求
- Silverstripe 3.1+(可能与3.0兼容,但未经过测试)
- Shop 模块 1.0 或 master 分支
- ZipArchive必须在php中启用以实现完全功能
功能
- 可应用于产品、产品变体或两者
- 如果购买变体,则变体和主产品的所有文件均可下载(可以在CMS中覆盖)。
- 可以将任何数量和类型的文件与产品关联
- 如果通过信用卡支付,则下载立即可在收件屏幕上获得
- 在订单历史记录中可获得下载
- 所有历史下载均可在账户区域的中央屏幕上获得
- 可以单独下载文件或以任何组合方式在zip存档中下载
- 我们应该保留zip文件几天,这样我们就不需要不断地重新创建它们
- 定时任务以删除旧文件
- 下载链接不应可猜测
- 对于同一文件,每个客户/订单的下载链接应不同
- 应记录下载
- 与 markguinn/silverstripe-cloudassets 模块兼容,用于在CDN上存储下载
安装
composer require markguinn/silverstripe-shop-downloadable dev-master
- 将可下载扩展添加到产品和/或产品变体或仅添加到某些子类。
- 运行
dev/build?flush
- 在CMS中添加一些文件(每个产品都有一个“文件”选项卡)
YML示例
Product:
extensions:
- Downloadable
ProductVariation:
extensions:
- Downloadable
文件下载过程
- 一旦订单付款,文件就会显示在订单屏幕上。链接由产品上的可下载扩展生成。
- 用户点击的链接类似于 "http://example.com/downloads/FILE-HASH",这将调用DownloadController。
- 给定订单ID和文件ID,哈希可重复(因此它也可以在电子邮件中使用)
- 此步骤还可以包括包含多个文件的表单提交。
- DownloadController记录下载。如果仅为单个文件且文件较小(默认100M,但可通过yml配置),则将仅输出MIME类型并使用readfile立即启动下载。如果有多个文件或文件较大,则将显示一个临时的“请等待”页面,在文件复制和/或压缩(如果有多个文件)时显示。
- 临时文件将以一种方式缓存,以便可以重用,直到由定时任务删除。
- 临时页面的文本可以通过yml配置从CMS中的任何页面获取
- 如果想要完全禁用“传递”行为,则可以很容易地通过将small_file_size设置为0来实现。
- 支持具有X-Sendfile的服务器。在这种情况下,可以将small_file_size设置得非常高,因为文件永远不会在内存中。
- 如果显示临时页面,它将立即重定向到另一个URL,该URL将启动复制/压缩任务
- 当复制/压缩任务完成时,它将重定向到临时文件的实际URL
配置(可下载类的YML选项)
- tab_name: CMS中文件选项卡的名称(默认:下载)
- 源文件夹:这些文件在cms中默认上传到何处(默认:product-files)
- zip文件夹:临时zip文件和大文件副本的位置(默认:temp-order-files)
- download_link_base:链接URL段 - 例如 http://example.com/downloads/filekey(默认:downloads)
- small_file_size:低于此大小的任何文件将通过readfile或x-sendfile直接传输,不创建临时文件(默认:100M)
- use_xsendfile:使用X-Sendfile头代替readfile,必须已安装mod_xsendfile(或等效)模块(默认:false)
- crunching_page:复制/压缩文件时显示的页面的URL段/路径,而不是默认页面
- crunching_zombie_window:在zip文件上重启压缩之前多少分钟(默认:5)
- delete_temp_files_after:在删除临时文件之前多少小时是合适的(默认:48)
待办事项
- 测试
很好,但我近期没有打算自己完成这项工作
- 可翻译
- 下载时间限制
开发者
- Mark Guinn mark@adaircreative.com
欢迎通过pull request和/或错误报告贡献。请遵循Silverstripe代码标准。
许可协议(MIT)
版权所有(c)2013 Mark Guinn
特此免费授予任何获得本软件及其相关文档副本(“软件”)的人权,在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,以及允许向软件提供的人使用上述权利,但应遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,还是关于适销性、特定目的适用性或不侵犯的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他法律行为,无论是源于、因之或与此软件或软件的使用或其他交易有关。