shel/asset-names

允许更改 Neos CMS 中上传的资产文件名

安装次数: 2,486

依赖项: 0

建议者: 0

安全性: 0

星标: 8

关注者: 3

分支: 0

开放性问题: 1

类型:neos-plugin

1.3.0 2022-09-15 07:45 UTC

This package is auto-updated.

Last update: 2024-09-09 12:15:47 UTC


README

Latest Stable Version Total Downloads License

安装此包将更改 Neos CMS 发布资产时文件的命名行为。默认情况下,Neos CMS 将在公共 Web 文件夹中创建一个指向存储在私有 Data/Persistent 文件夹中的文件的符号链接。这些指向图像和其他资产的符号链接将具有它们上传时的文件名。

新行为:这些资产的符号链接将具有基于其 标题 的文件名,该标题可以在 媒体模块 中设置。

优点

  • 您可以在 媒体模块 中为 SEO 优化文件名。
  • 存储在数据库中的实际文件名不会更改。
  • 旧文件名仍然有效,直到 Web/Resources 文件夹被清理。

注意事项

  • 最终的文件名将通过 slugify 运行,以防止文件名中的问题字符。
  • 存储在数据库中的实际文件名不会更改。因此,当请求公共 uri 时,需要向数据库执行额外查询以生成文件名。这可能在将来得到优化。

在我的测试中,使用此插件发布 ~1000 个资源需要 ~2.5 秒,而没有此功能则需要 ~1 秒。

如何使用它

  1. 通过 composer 在您的站点包中安装此包 composer require --no-update shel/asset-names
  2. 在项目的根目录中运行 composer update
  3. 运行 ./flow resource:publish
  4. 在媒体模块中更改资产标题,并检查预览中的结果文件名。

自定义文件名模式

您可以通过 Settings.yaml 自定义文件名创建。将以下片段添加到配置中,并根据需要对其进行调整

Shel:
 AssetNames:
  expression: "${'my-prefix-' + asset.title + '-' + width + 'x' + height}"

建议保留 widthheight 后缀。

此包目前无法做到的事情

当不使用提供的符号链接目标时,当前不起作用。

如果您使用复制目标或某些基于云的文件系统,您可以以相同的方式扩展这些目标,并将更改作为 PR 提交给此包。

未来计划

  • 此功能最终应包含在 Neos CMS 核心中。
  • 此包旨在找到最佳实现并支持较旧的 Neos 版本,直到它成为核心部分。

贡献

非常欢迎贡献!

请创建详细的 issue 和 PR。

如果您使用此包并希望支持或加速其开发,请使用 Github 的赞助按钮或 与我联系

许可协议

许可协议