setono/sylius-image-plugin

此插件将优化您的Sylius商店中的图片

安装次数: 10,103

依赖关系: 0

建议者: 0

安全性: 0

星标: 1

关注者: 1

分支: 0

开放问题: 12

类型:sylius-plugin

v0.1.8 2024-01-03 10:32 UTC

README

Latest Version Software License Build Status Code Coverage

此库将优化您的图片,并且因为它有智能回退,所以它能够无缝地与标准的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_thumbnailsylius_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