setono / sylius-redirect-plugin
Sylius plugin for managing redirects
Installs: 123 640
Dependents: 0
Suggesters: 0
Security: 0
Stars: 21
Watchers: 3
Forks: 18
Open Issues: 25
Type:sylius-plugin
Requires
- php: >=7.4
- doctrine/collections: ^1.6
- doctrine/orm: ^2.7
- doctrine/persistence: ^1.3 || ^2.1
- sylius/resource-bundle: ^1.6
- symfony/config: ^4.4 || ^5.0
- symfony/console: ^4.4 || ^5.0
- symfony/dependency-injection: ^4.4 || ^5.0
- symfony/event-dispatcher: ^4.4 || ^5.0
- symfony/form: ^4.4 || ^5.0
- symfony/http-foundation: ^4.4 || ^5.0.7
- symfony/http-kernel: ^4.4 || ^5.1.5
- symfony/routing: ^4.4 || ^5.0
- symfony/validator: ^4.4 || ^5.0
- thecodingmachine/safe: ^1.0
- webmozart/assert: ^1.9
Requires (Dev)
- friendsofphp/proxy-manager-lts: ^1.0
- phpspec/phpspec: ^6.1
- phpunit/phpunit: ^8.5
- psalm/plugin-phpunit: ^0.16.1
- psalm/plugin-symfony: ^3.0
- roave/security-advisories: dev-latest
- setono/code-quality-pack: ^2.1.3
- setono/sylius-behat-pack: ^0.1
- sylius/sylius: ~1.7.11
- symfony/debug-bundle: ^5.1
- symfony/dotenv: ^5.2
- symfony/intl: ^4.4 || ^5.0
- symfony/web-profiler-bundle: ^5.0
- weirdan/doctrine-psalm-plugin: ^1.2
- dev-master / 2.1.x-dev
- v2.1.8
- v2.1.7
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.1
- v2.0.0
- v2.0.0-beta.2
- v2.0.0-beta
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-renovate/configure
- dev-dependabot/composer/sylius/sylius-approx-1.10.14
- dev-dependabot/composer/phpspec/phpspec-tw-7.2
- dev-dependabot/composer/symfony/intl-tw-4.4.38
- dev-dependabot/composer/psalm/plugin-symfony-tw-3.1
- dev-dependabot/composer/symfony/dotenv-tw-5.4
- dev-dependabot/composer/setono/code-quality-pack-tw-2.1.2
- dev-dependabot/composer/sylius/sylius-approx-1.10.1
- dev-dependabot/composer/phpspec/phpspec-tw-7.1
- dev-dependabot/add-v2-config-file
- dev-dependabot/composer/setono/sylius-behat-pack-tw-0.2
- dev-log-404s
- dev-dependabot/composer/phpunit/phpunit-tw-9.5
This package is auto-updated.
Last update: 2023-02-08 11:30:20 UTC
README
Gives you the ability to manage redirects in your Sylius shop.
Installation
Step 1: Download the plugin
Open a command console, enter your project directory and execute the following command to download the latest stable version of this plugin:
$ composer require setono/sylius-redirect-plugin
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
Step 2: Enable the plugin
Then, enable the plugin by adding it to the list of registered plugins/bundles
in the config/bundles.php
file of your project:
<?php return [ // ... // Add before SyliusGridBundle Setono\SyliusRedirectPlugin\SetonoSyliusRedirectPlugin::class => ['all' => true], Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true], // ... ];
It is IMPORTANT to add the plugin before the grid bundle else you will get a an exception saying You have requested a non-existent parameter "setono_sylius_redirect.model.redirect.class".
Step 3: Add configuration
# config/routes/setono_sylius_redirect.yaml setono_sylius_redirect_admin: resource: "@SetonoSyliusRedirectPlugin/Resources/config/admin_routing.yaml" prefix: /admin
# config/packages/setono_sylius_redirect.yaml imports: # ... - { resource: "@SetonoSyliusRedirectPlugin/Resources/config/app/config.yaml" } # ...
Step 4: Update database
Use Doctrine migrations to create a migration file and update the database.
$ bin/console doctrine:migrations:diff $ bin/console doctrine:migrations:migrate
Step 5: Copy template
You can copy the templates under tests/Application/templates/bundles/SyliusAdminBundle
into your own application to enable the possibility to add an automatic redirection when updating product
Step 6: Install assets
$ bin/console assets:install
What it does
This plugin allows you to create new redirects.
Under the new menu entry Redirects
unders Configuration
, you can manage redirects.
Redirection entry
An entry is composed by:
- Source url, relative to your website
- Target URL, can be relative or absolute in case you want to redirect to another website
- Permanent or Temporary (This impact the HTTP response code of the redirection, 301 or 302)
- Enabled
- Redirect only if 404 (to manage potentially dead links)
Security
There is a built-in security when creating/modifying redirection that prevent creating an infinite loop. This work with infinite recursive checking.
A second security is to prevent same source redirection leading to inconstant redirect.
Automatic redirect
There is a built-in feature that allows you to automatically create a redirection when changing a product slug. It also handles the case where it would create an infinite loop and remove the unnecessary redirect.
Example: Having a slug like /products/a
, renaming it to /products/b
then renaming it to /products/a
will result in a redirect from b
to a
and will automatically delete the one from a
to b
.