mangoweb-sylius / sylius-extended-channels
Extended channels plugin for Sylius
Installs: 18 344
Dependents: 0
Suggesters: 0
Security: 0
Stars: 11
Watchers: 2
Forks: 7
Open Issues: 1
Type:sylius-plugin
pkg:composer/mangoweb-sylius/sylius-extended-channels
Requires
- php: ^8.2
- ext-json: *
- sylius/sylius: 2.0.*
Requires (Dev)
- behat/behat: ^v3.24.1
- behat/mink-selenium2-driver: ^v1.7.0
- dbrekelmans/bdi: ^1.4
- dmore/behat-chrome-extension: ^1.4.0
- dmore/chrome-mink-driver: ^2.9.3
- friends-of-behat/mink: ^v1.11.0
- friends-of-behat/mink-browserkit-driver: ^v1.6.2
- friends-of-behat/mink-debug-extension: ^v2.1.0
- friends-of-behat/mink-extension: ^v2.7.5
- friends-of-behat/page-object-extension: ^v0.3.2
- friends-of-behat/suite-settings-extension: ^v1.1.0
- friends-of-behat/symfony-extension: v2.6.0
- friends-of-behat/variadic-extension: ^v1.6.0
- nyholm/psr7: ^1.8
- php-http/message-factory: ^1.1.0
- phpspec/phpspec: ^7.5
- phpstan/phpstan: ^2.1.10
- phpstan/phpstan-doctrine: ^2.0.2
- phpstan/phpstan-strict-rules: ^2.0.4
- phpstan/phpstan-symfony: ^2.0.3
- phpstan/phpstan-webmozart-assert: ^2.0.0
- phpunit/phpunit: ^11.1 || ^12.0.10
- polishsymfonycommunity/symfony-mocker-container: ^v1.0.8
- rector/rector: ^2.0.10
- robertfausk/behat-panther-extension: ^1.2
- sylius-labs/coding-standard: ^v4.4.0
- sylius/sylius-rector: ^v3.0.0
- symfony/browser-kit: ^v6.4|^7.1
- symfony/config: ^v6.4|^7.1
- symfony/debug-bundle: ^v6.4|^7.1
- symfony/dependency-injection: ^v6.4|^7.1
- symfony/doctrine-bridge: ^v6.4|^7.1
- symfony/doctrine-messenger: ^v6.4|^7.1
- symfony/dotenv: ^v6.4|^7.1
- symfony/filesystem: ^v6.4|^7.1
- symfony/flex: ^v2.5.0
- symfony/framework-bundle: ^v6.4|^7.1
- symfony/http-foundation: ^v6.4|^7.1
- symfony/http-kernel: ^v6.4|^7.1
- symfony/intl: ^v6.4|^7.1
- symfony/messenger: ^v6.4|^7.1
- symfony/property-info: ^v6.4|^7.1
- symfony/var-dumper: ^v6.4|^7.1
- symfony/var-exporter: ^v6.4|^7.1
- symfony/web-profiler-bundle: ^v6.4|^7.1
- symplify/easy-coding-standard: ^12.0
Conflicts
- api-platform/core: <2.7.13
- api-platform/symfony: <v4.1.0
- babdev/pagerfanta-bundle: <3.6.1
- doctrine/collections: <1.7.0
- doctrine/data-fixtures: <1.5.1
- doctrine/dbal: <2.13.3
- doctrine/doctrine-bundle: <2.8.0
- friendsofsymfony/rest-bundle: <3.1.0
- jms/serializer-bundle: <4.2.0
- knplabs/knp-menu: <3.3.0
- lexik/jwt-authentication-bundle: <2.12
- masterminds/html5: <2.7.5
- payum/core: <1.7.3
- polishsymfonycommunity/symfony-mocker-container: <1.0.6
- sylius/resource-bundle: <1.13.0
- sylius/sylius: <2.0.8
- symfony/css-selector: <4.4.24
- symfony/framework-bundle: >=5.4.0 <=5.4.20|>=6.0.0 <=6.0.16|>=6.1.0 <=6.1.8|>=6.2.0 <=6.2.2|6.2.8
- symfony/mime: <5.4.0
- symfony/panther: <2.2.0
- symfony/web-link: <5.3.0
- symplify/easy-coding-standard: <10.2.0
- twig/twig: <2.14.7
- webmozart/assert: <1.11.0
- willdurand/negotiation: <3.0
This package is auto-updated.
Last update: 2025-10-02 06:48:11 UTC
README
Extended Channels Plugin
Features
- Duplicate product and product variant
- Bulk action to set categories for products
- Mark Taxon as an external link so taxonomy can be used for creating custom menus with links anywhere
- Download current exchange rates
- Update product prices using downloaded or custom exchange rates
- Set channel timezone (see Optional bellow for loading timezones data)
- Set channel phone (deprecated, use standard Sylius Contact phone number instead)
- Send a copy of order email to a custom email address (BCC) per channel
- When SMTP is unavailable, it prevents error 500 on order submit but logs the error and submits the order
- Cancel unpaid orders for a certain payment method
- Allows changing code for the product and product variant
- Administration for Hello Bars (you can use your own types)
Installation
-
Run
$ composer require mangoweb-sylius/sylius-extended-channels
. -
Add plugin classes to your
config/bundles.php
:return [ ... MangoSylius\ExtendedChannelsPlugin\MangoSyliusExtendedChannelsPlugin::class => ['all' => true], ];
-
Your Entity
Channel
has to implement\MangoSylius\ExtendedChannelsPlugin\Model\ExtendedChannelInterface
. You can use TraitMangoSylius\ExtendedChannelsPlugin\Model\ExtendedChannelTrait
. -
Your Entity
Taxon
has to implement\MangoSylius\ExtendedChannelsPlugin\Model\ExternalLinkTaxonInterface
. You can use TraitMangoSylius\ExtendedChannelsPlugin\Model\ExternalLinkTaxonTrait
. -
Add
{{ form_row(form.externalLink) }}
to template in@SyliusAdmin/Taxon/_form.html.twig
. -
Replace inner content of
<div class="sylius-grid-nav__bulk"> ... </div>
with{{ include('@MangoSyliusExtendedChannelsPlugin/Grid/bulkActions.html.twig') }}
in@SyliusUi/Grid/Body/_navigation.html.twig
. -
Replace inner content of
<div class="sylius-grid-nav__bulk"> ... </div>
with{{ include('@MangoSyliusExtendedChannelsPlugin/Grid/bulkActions.html.twig') }}
in@SyliusAdmin/Grid/_default.html.twig
. -
Add resource to
config/packeges/_sylius.yaml
# config/packages/_sylius.yaml imports: ... - { resource: "@MangoSyliusExtendedChannelsPlugin/config/resources.yaml" }
-
Add routing to
config/routes.yaml
# config/routes.yaml mango_extended_channels_plugin: resource: "@MangoSyliusExtendedChannelsPlugin/config/routing.yaml" prefix: "/%sylius_admin.path_name%"
For guide to use your own entity see Sylius docs - Customizing Models
Optional
Run src/Migrations/basic-data/timezones-data.sql
for load the timezones table. (Recommended, otherwise the timezone select will be empty)
Usage
Commands
-
Updates exchange rates (you need to define currencies first in Sylius admin)
mango:exchange-rates:update
-
Update Product prices by exchange rates, from
sourceChannel
(primary value, won't be changed) totargetChannel
. You can run this after the previous command to update by downloaded rates, or you can run it without the previous one to update the prices with your custom exchange rates set in Sylius admin.mango:product:update-price sourceChannel targetChannel
-
Remove orders that are not paid for a configured period and for certain shipping methods. This allows to keep unpaid orders which are e.g. to be paid at personal pickup, therefore needs to stay unpaid for a couple of hours / days. Configuration parameters:
sylius_order.order_expiration_period
sylius_order.expiration_method_codes
mango:cancel-unpaid-orders
-
You can use events to modify an object when you duplicate it
mango-sylius-extended-channels.duplicate.product.before-persist
mango-sylius-extended-channels.duplicate.product.after-persist
mango-sylius-extended-channels.duplicate.product-variant.before-persist
mango-sylius-extended-channels.duplicate.product-variant.after-persist
-
You can use event after bulk category assignment
mango-sylius-extended-channels.products.after_bulk_categories
-
You can change the types of Hello bars
parameters: mangoweb_sylius_extended_channels_hello_bar_types: error: 'Error' success: 'Success' info: 'Info' warning: 'Warning'
-
Use the Twig function for listing Hello Bars
mangoweb_sylius_available_hello_bars()
mangoweb_sylius_available_hello_bars_by_type(type)
Development
Usage
- Create symlink from .env.dist to .env or create your own .env file
- Develop your plugin in
/src
- See
bin/
for useful commands
Testing
After your changes you must ensure that the tests are still passing.
$ composer install
$ bin/console doctrine:schema:create -e test
$ bin/behat
$ bin/phpstan.sh
$ bin/ecs.sh
License
This library is under the MIT license.
Credits
Developed by manGoweb.