agence-adeliom/easy-seo-bundle

Symfony SEO bundle for EasyAdmin

2.0.122 2024-05-29 09:45 UTC

README

Adeliom Quality gate

Easy SEO Bundle

Versions

Installation with Symfony Flex

Add our recipes endpoint

{
  "extra": {
    "symfony": {
      "endpoint": [
        "https://api.github.com/repos/agence-adeliom/symfony-recipes/contents/index.json?ref=flex/main",
        ...
        "flex://defaults"
      ],
      "allow-contrib": true
    }
  }
}

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'
  enable_profiler: '%kernel.debug%'
  ignore_profiler: 
    - '^/admin*'

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);
});

License

MIT

Authors