shel / asset-names
允许更改 Neos CMS 中上传的资产文件名
1.3.0
2022-09-15 07:45 UTC
Requires
- cocur/slugify: ^2.5
- neos/neos: ~4.3 || ~5.0 || ~7.0 || ^8.0
README
安装此包将更改 Neos CMS 发布资产时文件的命名行为。默认情况下,Neos CMS 将在公共 Web
文件夹中创建一个指向存储在私有 Data/Persistent
文件夹中的文件的符号链接。这些指向图像和其他资产的符号链接将具有它们上传时的文件名。
新行为:这些资产的符号链接将具有基于其 标题
的文件名,该标题可以在 媒体模块
中设置。
优点
- 您可以在
媒体模块
中为 SEO 优化文件名。 - 存储在数据库中的实际文件名不会更改。
- 旧文件名仍然有效,直到
Web/Resources
文件夹被清理。
注意事项
- 最终的文件名将通过
slugify
运行,以防止文件名中的问题字符。 - 存储在数据库中的实际文件名不会更改。因此,当请求公共 uri 时,需要向数据库执行额外查询以生成文件名。这可能在将来得到优化。
在我的测试中,使用此插件发布 ~1000 个资源需要 ~2.5 秒,而没有此功能则需要 ~1 秒。
如何使用它
- 通过 composer 在您的站点包中安装此包
composer require --no-update shel/asset-names
。 - 在项目的根目录中运行
composer update
。 - 运行
./flow resource:publish
。 - 在媒体模块中更改资产标题,并检查预览中的结果文件名。
自定义文件名模式
您可以通过 Settings.yaml
自定义文件名创建。将以下片段添加到配置中,并根据需要对其进行调整
Shel: AssetNames: expression: "${'my-prefix-' + asset.title + '-' + width + 'x' + height}"
建议保留 width
和 height
后缀。
此包目前无法做到的事情
当不使用提供的符号链接目标时,当前不起作用。
如果您使用复制目标或某些基于云的文件系统,您可以以相同的方式扩展这些目标,并将更改作为 PR 提交给此包。
未来计划
- 此功能最终应包含在 Neos CMS 核心中。
- 此包旨在找到最佳实现并支持较旧的 Neos 版本,直到它成为核心部分。
贡献
非常欢迎贡献!
请创建详细的 issue 和 PR。
如果您使用此包并希望支持或加速其开发,请使用 Github 的赞助按钮或 与我联系
许可协议
见 许可协议