PHPackages                             vanssa/sylius-slider-plugin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. vanssa/sylius-slider-plugin

ActiveSylius-plugin[Utility &amp; Helpers](/categories/utility)

vanssa/sylius-slider-plugin
===========================

Vanssa Sylius Slider plugin.

2.3.6(3w ago)243MITPHPPHP &gt;=8.3CI passing

Since Feb 15Pushed 3w agoCompare

[ Source](https://github.com/vanssata/sylius-slider-plugin)[ Packagist](https://packagist.org/packages/vanssa/sylius-slider-plugin)[ RSS](/packages/vanssa-sylius-slider-plugin/feed)WikiDiscussions 2.3 Synced 1w ago

READMEChangelog (9)Dependencies (63)Versions (24)Used By (0)

Vanssa Sylius Slider Plugin
===========================

[](#vanssa-sylius-slider-plugin)

A Sylius 2.x plugin for building and managing rich storefront sliders and banners: a two-column admin workspace with a live preview, per-breakpoint media and layout, per-locale overrides, one-click style presets, content animations and video slides (self-hosted or YouTube) — rendered on the storefront through Symfony UX (Stimulus + Twig Components) and Twig Hooks.

[![Build](https://github.com/vanssata/sylius-slider-plugin/actions/workflows/build.yaml/badge.svg)](https://github.com/vanssata/sylius-slider-plugin/actions/workflows/build.yaml)[![Packagist Version](https://camo.githubusercontent.com/5ae83ea1b7f2165d7cff9f03f34690b8596296159d3fb90c157e5ced3675c477/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f76616e7373612f73796c6975732d736c696465722d706c7567696e2e737667)](https://packagist.org/packages/vanssa/sylius-slider-plugin)[![Packagist Downloads](https://camo.githubusercontent.com/d96681af09a456743793b98dd5e7e7df41e906c693f2ea401fd27b1317d61471/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f76616e7373612f73796c6975732d736c696465722d706c7567696e2e737667)](https://packagist.org/packages/vanssa/sylius-slider-plugin)[![License: MIT](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](LICENSE)

Feature tour
------------

[](#feature-tour)

Editing workspace — live preview with the settings drawer (toolbar-driven breakpoints and languages, live draft refresh):

[![Editing workspace](docs/media/admin-workspace.gif)](docs/media/admin-workspace.gif)

Style preset try-on — hovering a preset in the toolbar previews it on the actual banner, click applies it:

[![Preset try-on](docs/media/preset-tryon.gif)](docs/media/preset-tryon.gif)

Storefront slider, and the same slide re-laid-out per breakpoint:

StorefrontBreakpoints[![Storefront slider](docs/media/storefront-slider.gif)](docs/media/storefront-slider.gif)[![Responsive breakpoints](docs/media/responsive-breakpoints.gif)](docs/media/responsive-breakpoints.gif)What it does
------------

[](#what-it-does)

- **Editing workspace** — the live preview is the main surface; settings live in a right-hand drawer with Save, language and breakpoint always visible.
- **Per-breakpoint everything** — Desktop / Tablet / Mobile each get their own image, optional video and layout settings; anything left empty falls back to the wider breakpoint.
- **Per-locale overrides** — translations always override texts and can optionally override media and display settings.
- **Slide edit modal** — edit a slide from the grid without leaving it.
- **Style presets** — one-click bundles for sliders and slides, from project config and/or admin-managed database presets, with a gallery on the create pages and hover try-on in the toolbar.
- **Content animations** — nine entrance types with per-type duration/delay, triggered when the slider scrolls into view.
- **Video slides** — self-hosted uploads or an external URL (YouTube via the privacy-enhanced `youtube-nocookie` player); the provider layer is extensible.
- **Autoplay, navigation and pagination** — progress bar, five transition effects, configurable arrow/pagination placement and styling, keyboard navigation, touch swipe, parallax, lazy-loaded media.
- **Symfony UX storefront** — Twig Components plus a `vanssa-slider` Stimulus controller; every admin-configured value is exposed as a CSS custom property or data attribute for theming.
- **Twig Hooks integration** for the admin CRUD pages and, optionally, the shop homepage.
- **Demo fixtures** — a dedicated suite with bundled photos and a video clip.

Full option-by-option reference: [docs/usage/options-reference.md](docs/usage/options-reference.md).

Requirements
------------

[](#requirements)

DependencyVersionPHP`>= 8.3`Sylius`^2.1`Symfony`^7.4``symfony/ux-turbo``^2.22`Node.js`>= 20` (Yarn Classic v1)The frontend requires an Encore + `@symfony/stimulus-bridge` build (the Sylius-Standard default). **AssetMapper is not supported** — the plugin ships no importmap entries.

`composer.json` temporarily pins `api-platform/metadata`, `api-platform/symfony`, `api-platform/doctrine-common` and `api-platform/doctrine-orm` below `4.3` via a `conflict` block: a fresh install resolving api-platform `4.3.x` breaks `cache:warmup` in Sylius's ApiBundle routing. Keep those sub-packages below `4.3` in your project until the pin is lifted.

Install
-------

[](#install)

### 1. Register the recipe endpoint

[](#1-register-the-recipe-endpoint)

The plugin ships its own [Flex recipe endpoint](docs/FLEX_RECIPE.md), which lets `composer require` auto-register the bundle, its config import, its routes and its Stimulus controller manifests. `composer config --json extra.symfony.endpoint` **replaces** the whole array, though: a stock Sylius-Standard project already lists Sylius's own recipes endpoint there, and a naive two-entry command silently drops it, after which Sylius's own recipes stop resolving.

*Option A — with the `composer config` command:*

```
composer config --json extra.symfony.endpoint '["https://api.github.com/repos/Sylius/SyliusRecipes/contents/index.json?ref=flex/main","https://raw.githubusercontent.com/vanssata/sylius-slider-plugin/2.3/flex/index.json","flex://defaults"]'
```

The first entry is Sylius's own recipes endpoint — keep it, since a plain Sylius-Standard project already ships it and this command has to restate the whole array. `flex://defaults` stays last: Flex tries each endpoint in order and falls back to it.

*Option B — editing `composer.json` by hand*, for projects that prefer it, or whose `extra.symfony` block already carries other keys:

```
{
    "extra": {
        "symfony": {
            "endpoint": [
                "https://api.github.com/repos/Sylius/SyliusRecipes/contents/index.json?ref=flex/main",
                "https://raw.githubusercontent.com/vanssata/sylius-slider-plugin/2.3/flex/index.json",
                "flex://defaults"
            ]
        }
    }
}
```

The plugin's entry goes before `flex://defaults` — order is significant, since Flex resolves endpoints in order and stops at the first match. This is equivalent to Option A.

### 2. Install the package

[](#2-install-the-package)

```
composer require vanssa/sylius-slider-plugin -W
bin/console doctrine:migrations:migrate -n
yarn install --force && yarn build && bin/console assets:install && bin/console sylius:install:assets
```

`--force` matters on the first install too: Yarn Classic *copies* `file:`dependencies into `node_modules` instead of symlinking them, so a plain `yarn install` can leave a stale copy of the plugin's assets in place.

The Flex recipe registers the bundle, imports the config, mounts the admin and shop routes, and patches the storefront pair into your `assets/shop/controllers.json` and the full 14-controller set into your `assets/admin/controllers.json`. Separately, core Flex's `PackageJsonSynchronizer` seeds your root `assets/controllers.json` with all 14 controllers, but only the storefront pair active — the per-context files above take precedence in both builds. Manual wiring, the frontend contract and the optional Twig Hooks homepage integration are in [docs/usage/getting-started.md](docs/usage/getting-started.md); [docs/FLEX\_RECIPE.md](docs/FLEX_RECIPE.md) explains what the endpoint resolves and writes.

### 3. Load the demo fixtures (optional)

[](#3-load-the-demo-fixtures-optional)

Optional — meant for trying the plugin out or developing against it, not for loading on a production shop:

```
bin/console sylius:fixtures:load vanssa_sylius_slider_demo -n
```

`sylius:fixtures:load` takes the suite name as a **positional argument** — there is no `--suite` option, and passing one aborts the command. The suite (`vanssa_sylius_slider_demo`, defined in `config/fixtures.yaml`) creates six demo sliders, one per shipped style preset, with bundled photos and a video clip. The full table of what it seeds is in [docs/usage/getting-started.md](docs/usage/getting-started.md#demo-fixtures).

### Optional: homepage placement via Twig Hooks

[](#optional-homepage-placement-via-twig-hooks)

The plugin ships `config/twig_hooks/shop.yaml` with an **empty** hook map — it registers no storefront hookables of its own, so placement is your own project's configuration. Putting the fixture suite's `fashion-classic-arrows` slider on the homepage — the two steps chain together — looks like this:

```
# config/packages/vanssa_sylius_slider.yaml
sylius_twig_hooks:
    hooks:
        'sylius_shop.homepage.index':
            banner:
                enabled: false
            vanssa_sylius_slider_homepage:
                component: 'vanssa_sylius_slider:shop:homepage_slider'
                props:
                    code: 'fashion-classic-arrows'
                priority: 400
```

`sylius_shop.homepage.index` is Sylius core's hookable; its own hookables are `banner` (priority 300), `latest_deals` (200), `new_collection` (100) and `latest_products` (0), so a priority above 300 puts the slider at the top. Disabling `banner` is optional — without it you get both. The `homepage_slider` component applies the channel restriction and renders nothing when no enabled slider matches the code and channel — no error, no placeholder — which is the first thing to check if nothing appears. Other placements (a single slide, a CMS block, the direct routes) are in [docs/usage/storefront.md](docs/usage/storefront.md).

Documentation
-------------

[](#documentation)

**Using the plugin**

- [Getting started](docs/usage/getting-started.md) — install, first slider, demo fixtures
- [Admin guide](docs/usage/admin-guide.md) — the editing workspace, section by section
- [Style presets](docs/usage/style-presets.md) — gallery, try-on, admin-managed vs config
- [Storefront](docs/usage/storefront.md) — routes, hooks, breakpoints, video slides
- [Options reference](docs/usage/options-reference.md) — every option, value and default

**Extending the plugin**

- [Architecture](docs/dev/architecture.md) — layers and where things live
- [Adding a Stimulus controller](docs/dev/adding-a-stimulus-controller.md) — the four manifests
- [Extending](docs/dev/extending.md) — templates, services, form fields, providers
- [Style presets](docs/dev/style-presets.md) — defining presets in config
- [Color picker type](docs/dev/color-picker-type.md) — the reusable RGBA field
- [Testing](docs/dev/testing.md) — PHPUnit, Behat, Playwright and when to use which
- [Docs media](docs/dev/docs-media.md) — regenerating the screenshots and GIFs
- [Contributing](docs/dev/contributing.md) — local setup and release flow
- [Flex recipe](docs/FLEX_RECIPE.md) — how the recipe endpoint works

[Changelog](CHANGELOG.md) · [Upgrade guide](UPGRADE.md)

Upgrading
---------

[](#upgrading)

```
composer update vanssa/sylius-slider-plugin
composer recipes:update vanssa/sylius-slider-plugin
bin/console doctrine:migrations:migrate -n
yarn install --force && yarn build && bin/console assets:install
```

`composer recipes:update` re-applies the Flex recipe's patches — this is what picks up a changed recipe `ref`, such as the controller-manifest split added in 2.3.2. Yarn Classic *copies* `file:` dependencies instead of symlinking them, so `yarn install --force` is not optional after an upgrade — a plain install can keep serving a stale copy of the plugin's assets. Check [CHANGELOG.md](CHANGELOG.md) for new config keys, migrations or controller manifest changes; see [UPGRADE.md](UPGRADE.md) for the 2.3.2 controller-split migration specifically.

License
-------

[](#license)

MIT — see [LICENSE](LICENSE). The Sylius trademark and logo are covered by [LICENSE\_OF\_TRADEMARK\_AND\_LOGO](LICENSE_OF_TRADEMARK_AND_LOGO).

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance95

Actively maintained with recent releases

Popularity13

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 97.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~10 days

Recently: every ~2 days

Total

18

Last Release

14d ago

PHP version history (2 changes)2.2.1PHP ^8.2

2.2.0PHP &gt;=8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/4180b0d965236f47306d3a0b27309b750e16d1f1d6c42c60276503fce3e413b7?d=identicon)[vanssata](/maintainers/vanssata)

---

Top Contributors

[![vanssata](https://avatars.githubusercontent.com/u/1220804?v=4)](https://github.com/vanssata "vanssata (103 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (3 commits)")

---

Tags

bannnercarouselcarousel-componentcarousel-plugincarousel-sliderimage-sliderimage-slidersresponsive-slidersliderslider-componentslider-imageslider-pluginslider-videosliderssyliussylius-bannersylius-pluginsylius-slidervideo-slidersymfony-uxsyliusslidersylius-pluginautomotive

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/vanssa-sylius-slider-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/vanssa-sylius-slider-plugin/health.svg)](https://phpackages.com/packages/vanssa-sylius-slider-plugin)
```

###  Alternatives

[sylius/refund-plugin

Plugin provides basic refunds functionality for Sylius application.

721.8M22](/packages/sylius-refund-plugin)[odiseoteam/sylius-vendor-plugin

Vendor plugin for Sylius. Add Vendor (Brand) to your products

6269.0k1](/packages/odiseoteam-sylius-vendor-plugin)[webgriffe/sylius-table-rate-shipping-plugin

Provides table rate shipping calculator.

1494.8k](/packages/webgriffe-sylius-table-rate-shipping-plugin)[monsieurbiz/sylius-menu-plugin

This plugins allows you to manage menus.

1583.1k1](/packages/monsieurbiz-sylius-menu-plugin)[symfony/ux-native

Hotwire Native integration for Symfony

1214.6k](/packages/symfony-ux-native)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
