setono / sylius-mailchimp-plugin
Sylius 的 Mailchimp 插件。
Requires
- php: >=7.4
- ext-json: *
- ext-mbstring: *
- doctrine/doctrine-bundle: ^1.12.12 || ^2.0
- doctrine/event-manager: ^1.1
- doctrine/orm: ^2.7
- doctrine/persistence: ^1.3 || ^2.0
- drewm/mailchimp-api: ^2.5
- fakerphp/faker: ^1.20
- knplabs/knp-menu: ^3.3
- psr/log: ^1.1 || ^2.0 || ^3.0
- setono/doctrine-orm-batcher: ^0.6.2
- setono/doctrine-orm-batcher-bundle: ^0.3.1
- sylius/resource-bundle: ^1.6
- symfony/cache: ^4.4 || ^5.4 || ^6.0
- symfony/config: ^4.4 || ^5.4 || ^6.0
- symfony/console: ^4.4 || ^5.4 || ^6.0
- symfony/dependency-injection: ^4.4 || ^5.4 || ^6.0
- symfony/event-dispatcher: ^4.4 || ^5.4 || ^6.0
- symfony/form: ^4.4 || ^5.4 || ^6.0
- symfony/http-foundation: ^4.4 || ^5.4 || ^6.0
- symfony/lock: ^4.4 || ^5.4 || ^6.0
- symfony/messenger: ^4.4 || ^5.4 || ^6.0
- symfony/options-resolver: ^4.4 || ^5.4 || ^6.0
- symfony/routing: ^4.4 || ^5.4 || ^6.0
- symfony/translation-contracts: ^1.0 || ^2.0 || ^3.0
- symfony/validator: ^4.4 || ^5.4 || ^6.0
- symfony/workflow: ^4.4 || ^5.4 || ^6.0
- thecodingmachine/safe: ^1.3
- twig/twig: ^2.15 || ^3.0
- webmozart/assert: ^1.11
Requires (Dev)
- friendsofsymfony/oauth-server-bundle: ^1.6 || >2.0.0-alpha.0 ^2.0@dev
- phpspec/phpspec: ^7.2
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-latest
- setono/code-quality-pack: ^1.5
- sylius/sylius: ~1.9.10
- symfony/debug-bundle: ^4.4 || ^5.4 || ^6.0
- symfony/dotenv: ^4.4 || ^5.4 || ^6.0
- symfony/intl: ^4.4 || ^5.4 || ^6.0
- symfony/web-profiler-bundle: ^4.4 || ^5.4 || ^6.0
- dev-master / 1.0.x-dev
- v0.5.7
- v0.5.6
- v0.5.5
- v0.5.4
- v0.5.3
- v0.5.2
- v0.5.1
- v0.5.0
- v0.4.0
- v0.3.0
- v0.2.10
- v0.2.9
- v0.2.8
- v0.2.7
- v0.2.6
- v0.2.5
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-dependabot/github_actions/actions/checkout-4
- dev-dependabot/composer/setono/code-quality-pack-tw-1.5or-tw-2.0
- dev-dependabot/composer/sylius/sylius-approx-1.9.10or-approx-1.10.0
- dev-dependabot/github_actions/ramsey/composer-install-2
- dev-dependabot/github_actions/shivammathur/setup-php-2.11.0
- dev-adding-dtos
This package is auto-updated.
Last update: 2024-09-23 08:04:59 UTC
README
概览
本插件有三个主要目的
- 将您的客户(作为成员/订阅者)推送到 Mailchimp
- 利用他们的 电子商务功能 将您的订单推送到 Mailchimp
- 允许您的客户在结账时,以及使用您页面上的表单注册新闻通讯
它以节省内存和性能优化的方式完成所有这些。
安装
1. 安装依赖项
此插件使用 Doctrine ORM Batcher bundle。首先按照该页面上的说明进行安装。
2. 使用 composer 需求插件
$ composer require setono/sylius-mailchimp-plugin
3. 导入配置
# config/packages/setono_sylius_mailchimp.yaml imports: - { resource: "@SetonoSyliusMailchimpPlugin/Resources/config/app/config.yaml" } setono_sylius_mailchimp: api_key: '%env(MAILCHIMP_API_KEY)%'
请记住更新您的 .env
和 .env.local
文件
# .env
###> setono/sylius-mailchimp-plugin ###
MAILCHIMP_API_KEY=
###< setono/sylius-mailchimp-plugin ###
# .env.local
###> setono/sylius-mailchimp-plugin ###
MAILCHIMP_API_KEY=INSERT YOUR API KEY HERE
###< setono/sylius-mailchimp-plugin ###
4. 导入路由
# config/routes/setono_sylius_mailchimp.yaml setono_sylius_mailchimp: resource: "@SetonoSyliusMailchimpPlugin/Resources/config/routing.yaml"
5. 将插件类添加到您的 bundles.php
$bundles = [ // ... // Notice that the Mailchimp plugin has to be added before the SyliusGridBundle Setono\SyliusMailchimpPlugin\SetonoSyliusMailchimpPlugin::class => ['all' => true], Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true], Setono\DoctrineORMBatcherBundle\SetonoDoctrineORMBatcherBundle::class => ['all' => true], // ... ];
请确保在 SyliusGridBundle
之前添加插件。否则,您将收到类似于 您请求了不存在的参数 "setono_sylius_mailchimp.model.audience.class"
的异常。
6. 覆盖核心类
覆盖 Customer
资源
<?php // src/Entity/Customer/Customer.php declare(strict_types=1); namespace App\Entity\Customer; use Sylius\Component\Core\Model\Customer as BaseCustomer; use Setono\SyliusMailchimpPlugin\Model\CustomerInterface as SetonoSyliusMailchimpPluginCustomerInterface; use Setono\SyliusMailchimpPlugin\Model\CustomerTrait as SetonoSyliusMailchimpPluginCustomerTrait; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="sylius_customer") */ class Customer extends BaseCustomer implements SetonoSyliusMailchimpPluginCustomerInterface { use SetonoSyliusMailchimpPluginCustomerTrait; }
覆盖 Order
资源
<?php // src/Entity/Order/Order.php declare(strict_types=1); namespace App\Entity\Order; use Sylius\Component\Core\Model\Order as BaseOrder; use Setono\SyliusMailchimpPlugin\Model\OrderInterface as SetonoSyliusMailchimpPluginOrderInterface; use Setono\SyliusMailchimpPlugin\Model\OrderTrait as SetonoSyliusMailchimpPluginOrderTrait; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="sylius_order") */ class Order extends BaseOrder implements SetonoSyliusMailchimpPluginOrderInterface { use SetonoSyliusMailchimpPluginOrderTrait; }
覆盖 Channel
资源
<?php // src/Entity/Channel/Channel.php declare(strict_types=1); namespace App\Entity\Channel; use Sylius\Component\Core\Model\Channel as BaseChannel; use Setono\SyliusMailchimpPlugin\Model\ChannelInterface as SetonoSyliusMailchimpPluginChannelInterface; use Setono\SyliusMailchimpPlugin\Model\ChannelTrait as SetonoSyliusMailchimpPluginChannelTrait; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="sylius_channel") */ class Channel extends BaseChannel implements SetonoSyliusMailchimpPluginChannelInterface { use SetonoSyliusMailchimpPluginChannelTrait; }
创建 CustomerRepository.php
<?php // src/Doctrine/ORM/CustomerRepository.php declare(strict_types=1); namespace App\Doctrine\ORM; use Setono\SyliusMailchimpPlugin\Repository\CustomerRepositoryInterface as SetonoSyliusMailchimpPluginCustomerRepositoryInterface; use Setono\SyliusMailchimpPlugin\Doctrine\ORM\CustomerRepositoryTrait as SetonoSyliusMailchimpPluginCustomerRepositoryTrait; use Sylius\Bundle\CoreBundle\Doctrine\ORM\CustomerRepository as BaseCustomerRepository; class CustomerRepository extends BaseCustomerRepository implements SetonoSyliusMailchimpPluginCustomerRepositoryInterface { use SetonoSyliusMailchimpPluginCustomerRepositoryTrait; }
创建 OrderRepository.php
<?php // src/Doctrine/ORM/OrderRepository.php declare(strict_types=1); namespace App\Doctrine\ORM; use Setono\SyliusMailchimpPlugin\Repository\OrderRepositoryInterface as SetonoSyliusMailchimpPluginOrderRepositoryInterface; use Setono\SyliusMailchimpPlugin\Doctrine\ORM\OrderRepositoryTrait as SetonoSyliusMailchimpPluginOrderRepositoryTrait; use Sylius\Bundle\CoreBundle\Doctrine\ORM\OrderRepository as BaseOrderRepository; class OrderRepository extends BaseOrderRepository implements SetonoSyliusMailchimpPluginOrderRepositoryInterface { use SetonoSyliusMailchimpPluginOrderRepositoryTrait; }
添加配置
# config/packages/_sylius.yaml sylius_channel: resources: channel: classes: model: App\Entity\Channel\Channel sylius_customer: resources: customer: classes: model: App\Entity\Customer\Customer repository: App\Doctrine\ORM\CustomerRepository sylius_order: resources: order: classes: model: App\Entity\Order\Order repository: App\Doctrine\ORM\OrderRepository
7. 更新数据库
$ php bin/console doctrine:migrations:diff $ php bin/console doctrine:migrations:migrate
8. 安装资产
$ php bin/console assets:install
步骤 9:使用异步传输(可选,但非常推荐)
此插件中的所有命令都将扩展 CommandInterface。因此,您可以通过将此添加到您的 信使配置 来轻松路由所有命令。
# config/packages/messenger.yaml framework: messenger: routing: # Route all command messages to the async transport # This presumes that you have already set up an 'async' transport # See docs on how to setup a transport like that: https://symfony.com.cn/doc/current/messenger.html#transports-async-queued-messages 'Setono\SyliusMailchimpPlugin\Message\Command\CommandInterface': async
10. 复制模板
将位于测试目录中的模板(tests/Application/templates/bundles/
链接)复制到您的模板目录中,并根据需要修改。
11. 清除缓存
$ php bin/console cache:clear
12. 定义固件
# fixtures.yaml sylius_fixtures: suites: default: fixtures: setono_mailchimp: options: custom: - name: 'United States audience' audience_id: '0598aea4e3' channel: 'FASHION_WEB' - name: 'Denmark audience' audience_id: '0e23b9524f' channel: 'DK_WEB'
用法
实体推送使用 mailchimp
状态机
当状态为 待处理
时,实体将被推送到 Mailchimp。如您从图中所示,实体的更新和失败都由状态机处理。
默认情况下,该插件可以将客户和订单推送到 Mailchimp。
推送客户
运行以下命令以推送客户
$ php bin/console setono:sylius-mailchimp:push-customers
推送订单
运行以下命令以推送订单
$ php bin/console setono:sylius-mailchimp:push-orders
插入订阅表单
要将订阅表单插入到您网站上的任何位置,只需在 twig 中执行以下操作
{% include '@SetonoSyliusMailchimpPlugin/Shop/subscribe.html.twig' %}
当然,您也可以使用 BlockEventListener
<service id="app.block_event_listener.shop.subscribe_to_newsletter" class="Sylius\Bundle\UiBundle\Block\BlockEventListener"> <argument>@SetonoSyliusMailchimpPlugin/Shop/subscribe.html.twig</argument> <tag name="kernel.event_listener" event="sonata.block.event.sylius.shop.layout.after_footer" method="onBlockEvent"/> </service>
在这种情况下 - 您应该禁用默认的块事件监听器
setono_sylius_mailchimp: subscribe: false
故障排除
将频道关联到受众
请验证您的频道是否有地址,如果没有,请定义它并尝试重新提交表单。
贡献
运行 composer try
来设置插件环境并尝试测试应用。
请在推送更改之前运行 composer all
以运行所有检查和测试。
测试
运行 composer tests
以运行所有测试。