agence-adeliom/easy-seo-bundle

Symfony SEO bundle for EasyAdmin

1.0.0 2021-12-01 10:34 UTC

This package is auto-updated.

Last update: 2021-12-01 10:34:50 UTC


README

Adeliom Quality gate

Easy SEO Bundle

Installation

Install with composer

composer require agence-adeliom/easy-seo-bundle

Documentation

Customisation

# config/packages/easy_seo.yaml
easy_seo:
  title:
    suffix: ACME # Change the title suffix
    separator: '|' # Change the title separator
  breadcrumbs:
    class: 'breadcrumb'
    item_class: 'breadcrumb-item'
    link_class: ''
    current_class: 'active'
    separator: '>'
    separator_class: 'breadcrumb-separator'

Add SEO to your entity

Entity

use Adeliom\EasySeoBundle\Traits\EntitySeoTrait;

class Article {

    use EntitySeoTrait;

}

CRUD Controller

class ArticleCrudController extends AbstractCrudController
{
    public function configureFields(string $pageName): iterable
    {
        yield SEOField::new("seo");
    }
}

Twig template

# Render the title
{{- seo_title(object.seo) -}}

# Render the metadatas
{{- seo_metas(object.seo) -}}

# Render the breadcrumb
{{- seo_breadcrumb() -}}

Events

easyseo.title

use Symfony\Contracts\EventDispatcher\Event;

$dispatcher->addListener('easyseo.title', function (Event $event) {
    // will be executed when the easyseo.title event is dispatched
    
    // Get the title
    $title = $event->getArgument("title");
    
    // Set the title
    $event->setArgument("title", "custom title");
});

easyseo.render_meta

use Symfony\Contracts\EventDispatcher\Event;

$dispatcher->addListener('easyseo.render_meta', function (Event $event) {
    // will be executed when the easyseo.render_meta event is dispatched
    
    // Get SEO data
    $seoData = $event->getArgument("datas");
    
    // Set SEO data
    $event->setArgument("datas", $seoData);
});

easyseo.breadcrumb

use Symfony\Contracts\EventDispatcher\Event;

$dispatcher->addListener('easyseo.breadcrumb', function (Event $event) {
    // will be executed when the easyseo.breadcrumb event is dispatched
    
    // Get breadcrumb's items
    $items = $event->getArgument("items");
    
    // Set breadcrumb's items
    $event->setArgument("items", $items);
});

Troubleshooting

  • Adeliom\EasySeoBundle\Entity\SEO is not a valid entity or mapped super class.

In case of using php 8, old php 7 annotations are not supported by default, add those lines in your doctrine package configuration file :

doctrine:
    orm:
        mappings:
            EasySeoBundle:
              type: annotation
              alias: Adeliom\EasySeoBundle
              prefix: Adeliom\EasySeoBundle\Entity
              dir: "src/Entity"

License

MIT

Authors