setono / sylius-image-plugin
此插件将优化您的Sylius商店中的图片
v0.1.8
2024-01-03 10:32 UTC
Requires
- php: >=7.4
- doctrine/orm: ^2.6
- doctrine/persistence: ^2.0 || ^3.0
- knplabs/gaufrette: ^0.8 || ^0.9 || ^0.10 || ^0.11
- liip/imagine-bundle: ^2.6
- psr/event-dispatcher: ^1.0
- setono/doctrine-object-manager-trait: ^1.1
- spatie/data-transfer-object: ^2.8
- sylius/resource-bundle: ^1.8
- symfony/config: ^5.4 || ^6.0
- symfony/console: ^5.4 || ^6.0
- symfony/dependency-injection: ^5.4 || ^6.0
- symfony/event-dispatcher: ^5.4 || ^6.0
- symfony/event-dispatcher-contracts: ^1.1 || ^2.5 || ^3.1
- symfony/filesystem: ^5.4 || ^6.0
- symfony/http-client: ^5.4 || ^6.0
- symfony/http-client-contracts: ^1.1 || ^2.5 || ^3.1
- symfony/http-foundation: ^5.4 || ^6.0
- symfony/lock: ^5.4 || ^6.0
- symfony/messenger: ^5.4 || ^6.0
- symfony/mime: ^5.4 || ^6.0
- symfony/workflow: ^5.4 || ^6.0
- twig/twig: ^2.14 || ^3.4
- webmozart/assert: ^1.11
Requires (Dev)
- api-platform/core: ^2.7
- friendsofsymfony/oauth-server-bundle: >2.0.0-alpha.0 ^2.0@dev
- lexik/jwt-authentication-bundle: ^2.16
- matthiasnoback/symfony-dependency-injection-test: ^4.3
- phpunit/phpunit: ^9.5
- psalm/plugin-phpunit: ^0.18
- psalm/plugin-symfony: ^5.0
- roave/security-advisories: dev-latest
- setono/code-quality-pack: ^2.4
- sylius/admin-api-bundle: ^1.11
- sylius/sylius: ~1.10.14
- symfony/debug-bundle: ^5.4 || ^6.0
- symfony/dotenv: ^5.4 || ^6.0
- symfony/intl: ^5.4 || ^6.0
- symfony/property-info: ^5.4 || ^6.0
- symfony/serializer: ^5.4 || ^6.0
- symfony/web-profiler-bundle: ^5.4 || ^6.0
- symfony/webpack-encore-bundle: ^1.15
- 0.2.x-dev
- 0.1.x-dev
- v0.1.8
- v0.1.7
- v0.1.6
- v0.1.5
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-dependabot/composer/lexik/jwt-authentication-bundle-tw-2.18
- dev-dependabot/composer/phpunit/phpunit-tw-9.6
- dev-dependabot/composer/knplabs/gaufrette-tw-0.8.3
- dev-dependabot/composer/liip/imagine-bundle-tw-2.10
- dev-dependabot/composer/twig/twig-tw-2.15.4
This package is auto-updated.
Last update: 2024-09-03 11:50:57 UTC
README
此库将优化您的图片,并且因为它有智能回退,所以它能够无缝地与标准的Sylius安装配合使用。默认情况下,此插件使用Cloudflare,因此要使用它,您需要一个具有图片订阅的Cloudflare账户。
安装
步骤 1:下载插件
打开命令行,进入您的项目目录,并执行以下命令以下载此插件的最新稳定版本
composer require setono/sylius-image-plugin
步骤 2:启用插件
然后,通过将其添加到项目中config/bundles.php
文件中注册的插件/包列表中启用该插件,在SyliusGridBundle
之前
<?php $bundles = [ // ... Setono\SyliusImagePlugin\SetonoSyliusImagePlugin::class => ['all' => true], Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true], // ... ];
步骤 3:配置插件
# config/packages/setono_sylius_image.yaml imports: - { resource: "@SetonoSyliusImagePlugin/Resources/config/app/config.yaml" }
步骤 4:导入路由
# config/routes/setono_sylius_image.yaml setono_sylius_image: resource: "@SetonoSyliusImagePlugin/Resources/config/routes.yaml"
用法
在这个插件中,我们有一个名为变体的概念。这些是图片变体,即不同大小的图片。在默认的Sylius安装中,您使用Liip Imagine Bundle,它有一个过滤器集的概念。在这个插件的环境中,这两个概念大致相似。
要使用此插件,您必须告诉插件哪些变体(过滤器集)应该可用于优化,以及哪些图片资源应该被优化。以下是一个示例
配置
# config/packages/setono_sylius_image.yaml setono_sylius_image: available_variants: sylius_shop_product_original: ~ sylius_shop_product_tiny_thumbnail: ~ sylius_shop_product_small_thumbnail: ~ sylius_shop_product_thumbnail: ~ sylius_shop_product_large_thumbnail: ~ image_resources: sylius.product_image: variants: - 'sylius_shop_product_original' - 'sylius_shop_product_tiny_thumbnail' - 'sylius_shop_product_small_thumbnail' - 'sylius_shop_product_thumbnail' - 'sylius_shop_product_large_thumbnail'
这意味着对于每个产品图片,您将拥有五个将被优化的图片变体。其他变体如sylius_admin_product_thumbnail
或sylius_large
将不会被优化。
实施代码更改
为了使插件工作,图片资源需要实现一个接口。以下是一个产品图片资源的示例
<?php declare(strict_types=1); namespace App\Entity\Product; use Doctrine\ORM\Mapping as ORM; use Setono\SyliusImagePlugin\Model\ImageInterface as SetonoSyliusImagePluginImageInterface; use Setono\SyliusImagePlugin\Model\ImageTrait as SetonoSyliusImagePluginImageTrait; use Sylius\Component\Core\Model\ProductImage as BaseProductImage; /** * @ORM\Entity * @ORM\Table(name="sylius_product_image") */ class ProductImage extends BaseProductImage implements SetonoSyliusImagePluginImageInterface { use SetonoSyliusImagePluginImageTrait; }
最终
更新数据库模式
$ php bin/console doctrine:migrations:diff $ php bin/console doctrine:migrations:migrate